Strings
The StringType can be used to represent a sequence of bytes, you know, a string.
#![allow(unused)]
fn main() {
use schematic::{Schematic, Schema, SchemaBuilder, SchemaType, schema::{StringType, IntegerKind}};
impl Schematic for T {
fn build_schema(mut schema: SchemaBuilder) -> Schema {
schema.string_default()
}
}
}
Automatically implemented for
char,str,String,Path,PathBuf,IpAddr,Ipv4Addr,Ipv6Addr,SocketAddr,SocketAddrV4, andSocketAddrV6.
SystemTimeandDurationare not strings. Serde encodes them as maps —{ secs, nanos }and{ secs_since_epoch, nanos_since_epoch }— so they model as structs.
Default value
To customize the default value for use within generators, pass the desired
value to the StringType constructor.
#![allow(unused)]
fn main() {
schema.string(StringType::new("abc"));
}
Settings
The following fields can be passed to StringType, which are then fed into the
generator.
Enumerable
The enum_values field can be used to specify a list of literal values that are allowed for the
field.
#![allow(unused)]
fn main() {
StringType {
// ...
enum_values: Some(vec!["a".into(), "b".into(), "c".into()]),
}
}
Formats
The format field can be used to associate semantic meaning to the string, and how the string will
be used and displayed.
#![allow(unused)]
fn main() {
StringType {
// ...
format: Some("url".into()),
}
}
This is primarily used by JSON Schema.
Length
The min_length and max_length fields can be used to restrict the length of the string. Both
fields accept a non-zero number, and can be used together or individually.
#![allow(unused)]
fn main() {
StringType {
// ...
min_length: Some(1),
max_length: Some(10),
}
}
Patterns
The pattern field can be used to define a regex pattern that the string must abide by.
#![allow(unused)]
fn main() {
StringType {
// ...
format: Some("version".into()),
pattern: Some("\d+\.\d+\.\d+".into()),
}
}
This is primarily used by JSON Schema.