Skip to content

Commit 33b4023

Browse files
committed
support schemars
1 parent db1bbc2 commit 33b4023

File tree

13 files changed

+152
-34
lines changed

13 files changed

+152
-34
lines changed

.github/workflows/ci-version.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,27 @@ jobs:
2323
features:
2424
-
2525
- --features u128
26-
- --features serde
26+
- --features serde --features --schemars
2727
- --features rocket
2828
- --features bit
29-
- --features bit --features serde
29+
- --features bit --features serde --features --schemars
3030
- --features bit --features rocket
31-
- --features u128 --features serde
31+
- --features u128 --features serde --features --schemars
3232
- --features u128 --features bit
33-
- --features u128 --features bit --features serde
33+
- --features u128 --features bit --features serde --features --schemars
3434
- --no-default-features
3535
- --no-default-features --features byte
36-
- --no-default-features --features byte --features serde
36+
- --no-default-features --features byte --features serde --features --schemars
3737
- --no-default-features --features byte --features rocket
3838
- --no-default-features --features bit
39-
- --no-default-features --features bit --features serde
39+
- --no-default-features --features bit --features serde --features --schemars
4040
- --no-default-features --features bit --features rocket
4141
- --no-default-features --features byte --features bit
4242
- --no-default-features --features u128
4343
- --no-default-features --features u128 --features byte
44-
- --no-default-features --features u128 --features byte --features serde
44+
- --no-default-features --features u128 --features byte --features serde --features --schemars
4545
- --no-default-features --features u128 --features bit
46-
- --no-default-features --features u128 --features bit --features serde
46+
- --no-default-features --features u128 --features bit --features serde --features --schemars
4747
- --no-default-features --features u128 --features byte --features bit
4848
name: Test ${{ matrix.toolchain }} on ${{ matrix.os }} (${{ matrix.features }})
4949
runs-on: ${{ matrix.os }}
@@ -68,27 +68,27 @@ jobs:
6868
features:
6969
-
7070
- --features u128
71-
- --features serde
71+
- --features serde --features --schemars
7272
- --features rocket
7373
- --features bit
74-
- --features bit --features serde
74+
- --features bit --features serde --features --schemars
7575
- --features bit --features rocket
76-
- --features u128 --features serde
76+
- --features u128 --features serde --features --schemars
7777
- --features u128 --features bit
78-
- --features u128 --features bit --features serde
78+
- --features u128 --features bit --features serde --features --schemars
7979
- --no-default-features
8080
- --no-default-features --features byte
81-
- --no-default-features --features byte --features serde
81+
- --no-default-features --features byte --features serde --features --schemars
8282
- --no-default-features --features byte --features rocket
8383
- --no-default-features --features bit
84-
- --no-default-features --features bit --features serde
84+
- --no-default-features --features bit --features serde --features --schemars
8585
- --no-default-features --features bit --features rocket
8686
- --no-default-features --features byte --features bit
8787
- --no-default-features --features u128
8888
- --no-default-features --features u128 --features byte
89-
- --no-default-features --features u128 --features byte --features serde
89+
- --no-default-features --features u128 --features byte --features serde --features --schemars
9090
- --no-default-features --features u128 --features bit
91-
- --no-default-features --features u128 --features bit --features serde
91+
- --no-default-features --features u128 --features bit --features serde --features --schemars
9292
- --no-default-features --features u128 --features byte --features bit
9393
name: Test ${{ matrix.toolchain }} on ${{ matrix.os }} (${{ matrix.features }})
9494
runs-on: ${{ matrix.os }}

.github/workflows/ci.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,27 @@ jobs:
3939
features:
4040
-
4141
- --features u128
42-
- --features serde
42+
- --features serde --features --schemars
4343
- --features rocket
4444
- --features bit
45-
- --features bit --features serde
45+
- --features bit --features serde --features --schemars
4646
- --features bit --features rocket
47-
- --features u128 --features serde
47+
- --features u128 --features serde --features --schemars
4848
- --features u128 --features bit
49-
- --features u128 --features bit --features serde
49+
- --features u128 --features bit --features serde --features --schemars
5050
- --no-default-features
5151
- --no-default-features --features byte
52-
- --no-default-features --features byte --features serde
52+
- --no-default-features --features byte --features serde --features --schemars
5353
- --no-default-features --features byte --features rocket
5454
- --no-default-features --features bit
55-
- --no-default-features --features bit --features serde
55+
- --no-default-features --features bit --features serde --features --schemars
5656
- --no-default-features --features bit --features rocket
5757
- --no-default-features --features byte --features bit
5858
- --no-default-features --features u128
5959
- --no-default-features --features u128 --features byte
60-
- --no-default-features --features u128 --features byte --features serde
60+
- --no-default-features --features u128 --features byte --features serde --features --schemars
6161
- --no-default-features --features u128 --features bit
62-
- --no-default-features --features u128 --features bit --features serde
62+
- --no-default-features --features u128 --features bit --features serde --features --schemars
6363
- --no-default-features --features u128 --features byte --features bit
6464
name: Test ${{ matrix.toolchain }} on ${{ matrix.os }} (${{ matrix.features }})
6565
runs-on: ${{ matrix.os }}
@@ -84,27 +84,27 @@ jobs:
8484
features:
8585
-
8686
- --features u128
87-
- --features serde
87+
- --features serde --features --schemars
8888
- --features rocket
8989
- --features bit
90-
- --features bit --features serde
90+
- --features bit --features serde --features --schemars
9191
- --features bit --features rocket
92-
- --features u128 --features serde
92+
- --features u128 --features serde --features --schemars
9393
- --features u128 --features bit
94-
- --features u128 --features bit --features serde
94+
- --features u128 --features bit --features serde --features --schemars
9595
- --no-default-features
9696
- --no-default-features --features byte
97-
- --no-default-features --features byte --features serde
97+
- --no-default-features --features byte --features serde --features --schemars
9898
- --no-default-features --features byte --features rocket
9999
- --no-default-features --features bit
100-
- --no-default-features --features bit --features serde
100+
- --no-default-features --features bit --features serde --features --schemars
101101
- --no-default-features --features bit --features rocket
102102
- --no-default-features --features byte --features bit
103103
- --no-default-features --features u128
104104
- --no-default-features --features u128 --features byte
105-
- --no-default-features --features u128 --features byte --features serde
105+
- --no-default-features --features u128 --features byte --features serde --features --schemars
106106
- --no-default-features --features u128 --features bit
107-
- --no-default-features --features u128 --features bit --features serde
107+
- --no-default-features --features u128 --features bit --features serde --features --schemars
108108
- --no-default-features --features u128 --features byte --features bit
109109
name: Test ${{ matrix.toolchain }} on ${{ matrix.os }} (${{ matrix.features }})
110110
runs-on: ${{ matrix.os }}

Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "byte-unit"
3-
version = "5.1.6"
3+
version = "5.2.0"
44
authors = ["Magic Len <[email protected]>"]
55
edition = "2021"
66
rust-version = "1.70"
@@ -16,6 +16,7 @@ include = ["src/**/*", "Cargo.toml", "README.md", "LICENSE"]
1616
utf8-width = "0.1"
1717

1818
serde = { version = "1", default-features = false, features = ["alloc"], optional = true }
19+
schemars = { version = "1", default-features = false, optional = true }
1920
rocket = { version = "0.5", optional = true }
2021
rust_decimal = { version = "1", default-features = false, optional = true }
2122

@@ -26,10 +27,11 @@ serde_json = "1"
2627
default = ["std", "byte"]
2728

2829
serde = ["dep:serde"]
30+
schemars = ["dep:schemars"]
2931
rocket = ["dep:rocket", "std"]
3032
rust_decimal = ["dep:rust_decimal"]
3133

32-
std = ["serde?/std", "rust_decimal?/std"]
34+
std = ["serde?/std", "schemars?/std", "rust_decimal?/std"]
3335
u128 = []
3436
byte = ["rust_decimal"]
3537
bit = ["rust_decimal"]

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,16 @@ version = "*"
168168
features = ["serde"]
169169
```
170170

171+
## Schemars Support
172+
173+
Enable the `schemars` feature to support Schemars. Probably the `serde` feature is also needed.
174+
175+
```toml
176+
[dependencies.byte-unit]
177+
version = "*"
178+
features = ["serde", "schemars"]
179+
```
180+
171181
## Rocket Support
172182

173183
Enable the `rocket` feature to support the Rocket framework.

src/bit/adjusted/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
mod built_in_traits;
22
#[cfg(feature = "rocket")]
33
mod rocket_traits;
4+
#[cfg(feature = "schemars")]
5+
mod schemars_traits;
46
#[cfg(feature = "serde")]
57
mod serde_traits;
68

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use alloc::borrow::Cow;
2+
3+
use schemars::{JsonSchema, Schema, SchemaGenerator};
4+
5+
use super::AdjustedBit;
6+
7+
impl JsonSchema for AdjustedBit {
8+
#[inline]
9+
fn inline_schema() -> bool {
10+
true
11+
}
12+
13+
#[inline]
14+
fn schema_name() -> Cow<'static, str> {
15+
Cow::Borrowed("AdjustedBit")
16+
}
17+
18+
#[inline]
19+
fn json_schema(generator: &mut SchemaGenerator) -> Schema {
20+
generator.subschema_for::<String>()
21+
}
22+
}

src/bit/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ mod decimal;
55
mod parse;
66
#[cfg(feature = "rocket")]
77
mod rocket_traits;
8+
#[cfg(feature = "schemars")]
9+
mod schemars_traits;
810
#[cfg(feature = "serde")]
911
mod serde_traits;
1012

src/bit/schemars_traits.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use alloc::borrow::Cow;
2+
3+
use schemars::{JsonSchema, Schema, SchemaGenerator};
4+
5+
use super::Bit;
6+
7+
impl JsonSchema for Bit {
8+
#[inline]
9+
fn inline_schema() -> bool {
10+
true
11+
}
12+
13+
#[inline]
14+
fn schema_name() -> Cow<'static, str> {
15+
Cow::Borrowed("Bit")
16+
}
17+
18+
#[inline]
19+
fn json_schema(generator: &mut SchemaGenerator) -> Schema {
20+
generator.subschema_for::<String>()
21+
}
22+
}

src/byte/adjusted/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
mod built_in_traits;
22
#[cfg(feature = "rocket")]
33
mod rocket_traits;
4+
#[cfg(feature = "schemars")]
5+
mod schemars_traits;
46
#[cfg(feature = "serde")]
57
mod serde_traits;
68

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use alloc::borrow::Cow;
2+
3+
use schemars::{JsonSchema, Schema, SchemaGenerator};
4+
5+
use super::AdjustedByte;
6+
7+
impl JsonSchema for AdjustedByte {
8+
#[inline]
9+
fn inline_schema() -> bool {
10+
true
11+
}
12+
13+
#[inline]
14+
fn schema_name() -> Cow<'static, str> {
15+
Cow::Borrowed("AdjustedByte")
16+
}
17+
18+
#[inline]
19+
fn json_schema(generator: &mut SchemaGenerator) -> Schema {
20+
generator.subschema_for::<String>()
21+
}
22+
}

0 commit comments

Comments
 (0)