all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Dietmar Maurer <dietmar@proxmox.com>, pve-devel@lists.proxmox.com
Subject: Re: [RFC proxmox v2] schema: add CommaSeparatedList<T> wrapper type for comma-separated values
Date: Tue, 10 Feb 2026 09:25:42 +0100	[thread overview]
Message-ID: <febd486e-f2e2-428e-9018-e359a155c1ba@proxmox.com> (raw)
In-Reply-To: <20260209084554.70492-1-dietmar@proxmox.com>

Am 09.02.26 um 09:45 schrieb Dietmar Maurer:
> Introduce a new CommaSeparatedList<T> wrapper type that provides
> schema-aware serialization and deserialization of comma-separated
> values, similar to PropertyString but designed for list/array types.
> 
> Key components:
> - CommaSeparatedListSchema trait: Provides the static ARRAY_SCHEMA
>   required for (de)serialization (workaround for unstable generic
>   const items in Rust)
> - CommaSeparatedList<T>: A transparent Vec<T> newtype with Deref/
>   DerefMut implementations for ergonomic access
> 
> The wrapper automatically handles conversion between "1,2,3" string
> representation and Vec<T> while validating against the element schema.
> 
> Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
> ---
> 
> Changes in v2:
> 
> - use description from ARRAY_SCHEMA
> - add test for that
> 
> 
> 
>  proxmox-schema/src/comma_separated_list.rs | 173 +++++++++++++++++++++
>  proxmox-schema/src/lib.rs                  |   1 +
>  2 files changed, 174 insertions(+)
>  create mode 100644 proxmox-schema/src/comma_separated_list.rs
> 
> diff --git a/proxmox-schema/src/comma_separated_list.rs b/proxmox-schema/src/comma_separated_list.rs
> new file mode 100644
> index 00000000..381b17c5
> --- /dev/null
> +++ b/proxmox-schema/src/comma_separated_list.rs
> @@ -0,0 +1,173 @@
Would be nice to have a module-level rust doc for new modules with an usage example.
As those doc examples are run on testing/build, if not excluded explicitly, they could
also provide some (extra) coverage here.

E.g., from a quick check the cases for empty list serializing to "" (or?) and a 
list with spaces after the comma are not tested as of now.

> ...

> +impl<T: FromStr + Display> CommaSeparatedList<T> {

Is there any reason for limiting this to FromStr + Display ?
The implementation does not depend on it and if one would have a type with
Serialize + CommaSeparatedListSchema implemented, they couldn't use this constructor.

If there's a reason behind doing this, it'd be nice to have a short comment here
to describe why the type bounds are more limiting than necessary.

> +    pub fn new(inner: Vec<T>) -> Self {
> +        Self(inner)
> +    }
> +
> +    pub fn into_inner(self) -> Vec<T> {
> +        self.0
> +    }
> +}
> +

> ...

> diff --git a/proxmox-schema/src/lib.rs b/proxmox-schema/src/lib.rs
> index 1647e8a9..fd773a84 100644
> --- a/proxmox-schema/src/lib.rs
> +++ b/proxmox-schema/src/lib.rs
> @@ -22,6 +22,7 @@ pub mod de;
>  pub mod format;
>  pub mod ser;
>  
> +pub mod comma_separated_list;

This makes the main type accessible under "proxmox_schema::comma_separated_list::CommaSeparatedList"
which is rather redundant and IMO has not much benefits over re-exporting CommaSeparatedList
directly to allow accessing it under proxmox_schema::CommaSeparatedList

But no hard feelings, we got this "problem" quite a few times already.




      reply	other threads:[~2026-02-10  8:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-09  8:45 Dietmar Maurer
2026-02-10  8:25 ` Thomas Lamprecht [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=febd486e-f2e2-428e-9018-e359a155c1ba@proxmox.com \
    --to=t.lamprecht@proxmox.com \
    --cc=dietmar@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal