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, Ipv4Addr, Ipv6Addr, SystemTime, and Duration.

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.