schema: factor out string verify fn and improve docs

We'll need to name the type when we add more perl bindings.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2022-03-04 14:51:16 +01:00
parent 6e4a912bea
commit cdf4326e43

View File

@ -1134,9 +1134,12 @@ pub enum ApiStringFormat {
/// Use a schema to describe complex types encoded as string. /// Use a schema to describe complex types encoded as string.
PropertyString(&'static Schema), PropertyString(&'static Schema),
/// Use a verification function. /// Use a verification function.
VerifyFn(fn(&str) -> Result<(), Error>), VerifyFn(ApiStringVerifyFn),
} }
/// Type of a verification function for [`StringSchema`]s.
pub type ApiStringVerifyFn = fn(&str) -> Result<(), Error>;
impl ApiStringFormat { impl ApiStringFormat {
/// Gets the underlying [`&[EnumEntry]`](EnumEntry) list, panics on different formats. /// Gets the underlying [`&[EnumEntry]`](EnumEntry) list, panics on different formats.
pub const fn unwrap_enum_format(&self) -> &'static [EnumEntry] { pub const fn unwrap_enum_format(&self) -> &'static [EnumEntry] {
@ -1457,6 +1460,7 @@ impl<T> UpdaterType for Vec<T> {
type Updater = Option<Self>; type Updater = Option<Self>;
} }
/// Trait signifying that a type contains an API schema.
pub trait ApiType { pub trait ApiType {
const API_SCHEMA: Schema; const API_SCHEMA: Schema;
} }
@ -1490,6 +1494,7 @@ impl<T> Updater for Option<T> {
} }
} }
/// Return type schema. Return types may be any schema and additionally be optional.
#[cfg_attr(feature = "test-harness", derive(Eq, PartialEq))] #[cfg_attr(feature = "test-harness", derive(Eq, PartialEq))]
pub struct ReturnType { pub struct ReturnType {
/// A return type may be optional, meaning the method may return null or some fixed data. /// A return type may be optional, meaning the method may return null or some fixed data.