Skip to content

Commit 6716dfb

Browse files
committed
bump schemars to 1.0
1 parent c074547 commit 6716dfb

File tree

3 files changed

+57
-96
lines changed

3 files changed

+57
-96
lines changed

Cargo.lock

Lines changed: 25 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ num-traits = { version = "0.2.9", default-features = false }
2424
proptest = { version = "1.0.0", optional = true }
2525
rand = { version = "0.8.3", optional = true, default-features = false }
2626
rkyv = { version = "0.7.41", optional = true, default-features = false, features = ["rend"] }
27-
schemars = { version = "0.8.8", optional = true }
27+
schemars = { version = "1.0", optional = true }
2828
serde = { version = "1.0", optional = true, default-features = false }
2929
speedy = { version = "0.8.3", optional = true, default-features = false }
3030

src/lib.rs

Lines changed: 31 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -2440,28 +2440,27 @@ mod impl_borsh {
24402440
#[cfg(all(feature = "std", feature = "schemars"))]
24412441
mod impl_schemars {
24422442
extern crate schemars;
2443-
use self::schemars::gen::SchemaGenerator;
2444-
use self::schemars::schema::{InstanceType, Schema, SchemaObject};
2443+
use self::schemars::generate::SchemaGenerator;
2444+
use self::schemars::Schema;
24452445
use super::{NotNan, OrderedFloat};
24462446

24472447
macro_rules! primitive_float_impl {
24482448
($type:ty, $schema_name:literal) => {
24492449
impl schemars::JsonSchema for $type {
2450-
fn is_referenceable() -> bool {
2451-
false
2450+
fn inline_schema() -> bool {
2451+
true
24522452
}
24532453

2454-
fn schema_name() -> std::string::String {
2455-
std::string::String::from($schema_name)
2454+
fn schema_name() -> std::borrow::Cow<'static, str> {
2455+
std::borrow::Cow::from($schema_name)
24562456
}
24572457

24582458
fn json_schema(_: &mut SchemaGenerator) -> Schema {
2459-
SchemaObject {
2460-
instance_type: Some(InstanceType::Number.into()),
2461-
format: Some(std::string::String::from($schema_name)),
2462-
..Default::default()
2463-
}
2464-
.into()
2459+
schemars::json_schema!({
2460+
"type": "number",
2461+
"title": $schema_name,
2462+
"format": $schema_name,
2463+
})
24652464
}
24662465
}
24672466
};
@@ -2474,93 +2473,34 @@ mod impl_schemars {
24742473

24752474
#[test]
24762475
fn schema_generation_does_not_panic_for_common_floats() {
2477-
{
2478-
let schema = schemars::gen::SchemaGenerator::default()
2479-
.into_root_schema_for::<OrderedFloat<f32>>();
2480-
assert_eq!(
2481-
schema.schema.instance_type,
2482-
Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new(
2483-
schemars::schema::InstanceType::Number
2484-
)))
2485-
);
2486-
assert_eq!(
2487-
schema.schema.metadata.unwrap().title.unwrap(),
2488-
std::string::String::from("float")
2489-
);
2490-
}
2491-
{
2492-
let schema = schemars::gen::SchemaGenerator::default()
2493-
.into_root_schema_for::<OrderedFloat<f64>>();
2494-
assert_eq!(
2495-
schema.schema.instance_type,
2496-
Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new(
2497-
schemars::schema::InstanceType::Number
2498-
)))
2499-
);
2500-
assert_eq!(
2501-
schema.schema.metadata.unwrap().title.unwrap(),
2502-
std::string::String::from("double")
2503-
);
2504-
}
2505-
{
2506-
let schema =
2507-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<NotNan<f32>>();
2508-
assert_eq!(
2509-
schema.schema.instance_type,
2510-
Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new(
2511-
schemars::schema::InstanceType::Number
2512-
)))
2513-
);
2514-
assert_eq!(
2515-
schema.schema.metadata.unwrap().title.unwrap(),
2516-
std::string::String::from("float")
2517-
);
2518-
}
2519-
{
2520-
let schema =
2521-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<NotNan<f64>>();
2522-
assert_eq!(
2523-
schema.schema.instance_type,
2524-
Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new(
2525-
schemars::schema::InstanceType::Number
2526-
)))
2527-
);
2528-
assert_eq!(
2529-
schema.schema.metadata.unwrap().title.unwrap(),
2530-
std::string::String::from("double")
2531-
);
2476+
fn test<T: schemars::JsonSchema>(title: &str) {
2477+
let schema = schemars::generate::SchemaGenerator::default().into_root_schema_for::<T>();
2478+
2479+
assert_eq!(schema.get("type").unwrap().as_str().unwrap(), "number");
2480+
assert_eq!(schema.get("title").unwrap().as_str().unwrap(), title);
2481+
assert_eq!(schema.get("format").unwrap().as_str().unwrap(), title);
25322482
}
2483+
2484+
test::<OrderedFloat<f32>>("float");
2485+
test::<NotNan<f32>>("float");
2486+
test::<OrderedFloat<f64>>("double");
2487+
test::<NotNan<f64>>("double");
25332488
}
2489+
25342490
#[test]
25352491
fn ordered_float_schema_match_primitive_schema() {
2536-
{
2537-
let of_schema = schemars::gen::SchemaGenerator::default()
2538-
.into_root_schema_for::<OrderedFloat<f32>>();
2539-
let prim_schema =
2540-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<f32>();
2541-
assert_eq!(of_schema, prim_schema);
2542-
}
2543-
{
2544-
let of_schema = schemars::gen::SchemaGenerator::default()
2545-
.into_root_schema_for::<OrderedFloat<f64>>();
2546-
let prim_schema =
2547-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<f64>();
2548-
assert_eq!(of_schema, prim_schema);
2549-
}
2550-
{
2551-
let of_schema =
2552-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<NotNan<f32>>();
2553-
let prim_schema =
2554-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<f32>();
2555-
assert_eq!(of_schema, prim_schema);
2556-
}
2557-
{
2492+
fn test<Wrapped: schemars::JsonSchema, Inner: schemars::JsonSchema>() {
25582493
let of_schema =
2559-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<NotNan<f64>>();
2494+
schemars::generate::SchemaGenerator::default().into_root_schema_for::<Wrapped>();
25602495
let prim_schema =
2561-
schemars::gen::SchemaGenerator::default().into_root_schema_for::<f64>();
2496+
schemars::generate::SchemaGenerator::default().into_root_schema_for::<Inner>();
25622497
assert_eq!(of_schema, prim_schema);
25632498
}
2499+
2500+
test::<OrderedFloat<f32>, f32>();
2501+
test::<NotNan<f32>, f32>();
2502+
test::<OrderedFloat<f64>, f64>();
2503+
test::<NotNan<f64>, f64>();
25642504
}
25652505
}
25662506

0 commit comments

Comments
 (0)