pub struct SchemaGenerator;Expand description
Schema generator for creating JSON Schemas from Rust types
This is a stateless utility that wraps the Schemars library, providing a clean interface for schema generation.
§Examples
use torrust_tracker_deployer_lib::infrastructure::schema::SchemaGenerator;
use torrust_tracker_deployer_lib::application::command_handlers::create::config::EnvironmentCreationConfig;
let schema_json = SchemaGenerator::generate::<EnvironmentCreationConfig>()?;Implementations§
Source§impl SchemaGenerator
impl SchemaGenerator
Sourcepub fn generate<T: JsonSchema>() -> Result<String, SchemaGenerationError>
pub fn generate<T: JsonSchema>() -> Result<String, SchemaGenerationError>
Generates a JSON Schema for the given type
The type must implement JsonSchema from the Schemars library.
§Type Parameters
T- The type to generate a schema for (must implementJsonSchema)
§Returns
Ok(String)- The JSON Schema as a pretty-printed JSON stringErr(SchemaGenerationError)- If serialization fails
§Examples
use torrust_tracker_deployer_lib::infrastructure::schema::SchemaGenerator;
use torrust_tracker_deployer_lib::application::command_handlers::create::config::EnvironmentCreationConfig;
let schema = SchemaGenerator::generate::<EnvironmentCreationConfig>()?;
assert!(schema.contains("\"$schema\""));
assert!(schema.contains("\"environment\""));§Errors
Returns SchemaGenerationError::SerializationFailed if the schema
cannot be serialized to JSON (this should be extremely rare).
Auto Trait Implementations§
impl Freeze for SchemaGenerator
impl RefUnwindSafe for SchemaGenerator
impl Send for SchemaGenerator
impl Sync for SchemaGenerator
impl Unpin for SchemaGenerator
impl UnsafeUnpin for SchemaGenerator
impl UnwindSafe for SchemaGenerator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request