Skip to content

Commit 4d53c2d

Browse files
committed
Implement postcard_schema::Schema for log::Level and log::LevelFilter
1 parent 2f0d7dc commit 4d53c2d

11 files changed

Lines changed: 223 additions & 1 deletion

File tree

ci.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ cargo_test() {
2929
cargo test --all "$@"
3030
}
3131

32-
cargo_test --features=alloc,experimental-derive,use-std,use-crc,derive,nalgebra-v0_33,heapless-v0_8,bytes-v1_0,indexmap-v2_0
32+
cargo_test --features=alloc,experimental-derive,use-std,use-crc,derive,nalgebra-v0_33,heapless-v0_8,bytes-v1_0,indexmap-v2_0,log-v0_4
3333

3434
# NOTE: we exclude postcard-dyn for these checks because it is std-only
3535

source/postcard-schema-ng/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ version = "2.0"
9797
optional = true
9898
default-features = false
9999

100+
[dependencies.log_v0_4]
101+
package = "log"
102+
version = "0.4"
103+
optional = true
104+
default-features = false
105+
100106
[dev-dependencies.postcard]
101107
path = "../postcard"
102108
version = "1.0"
@@ -125,6 +131,11 @@ package = "indexmap"
125131
version = "2.0"
126132
features = ["std", "serde"]
127133

134+
[dev-dependencies.log_v0_4]
135+
package = "log"
136+
version = "0.4"
137+
features = ["serde"]
138+
128139
[features]
129140
default = []
130141
use-std = ["serde/std"]
@@ -145,3 +156,4 @@ serde-big-array-v0_5 = ["serde-big-array_v0_5"]
145156
uuid-v1_0 = ["uuid_v1_0"]
146157
bytes-v1_0 = ["bytes_v1_0"]
147158
indexmap-v2_0 = ["indexmap_v2_0"]
159+
log-v0_4 = ["log_v0_4"]
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//! Implementations of the [`Schema`] trait for the `log` crate v0.4
2+
3+
use crate::{
4+
schema::{Data, DataModelType, Variant},
5+
Schema,
6+
};
7+
8+
impl Schema for log_v0_4::Level {
9+
const SCHEMA: &'static DataModelType = &DataModelType::Enum {
10+
name: "Level",
11+
variants: &[
12+
&Variant {
13+
name: "ERROR",
14+
data: Data::Unit,
15+
},
16+
&Variant {
17+
name: "WARN",
18+
data: Data::Unit,
19+
},
20+
&Variant {
21+
name: "INFO",
22+
data: Data::Unit,
23+
},
24+
&Variant {
25+
name: "DEBUG",
26+
data: Data::Unit,
27+
},
28+
&Variant {
29+
name: "TRACE",
30+
data: Data::Unit,
31+
},
32+
],
33+
};
34+
}
35+
36+
impl Schema for log_v0_4::LevelFilter {
37+
const SCHEMA: &'static DataModelType = &DataModelType::Enum {
38+
name: "Level",
39+
variants: &[
40+
&Variant {
41+
name: "OFF",
42+
data: Data::Unit,
43+
},
44+
&Variant {
45+
name: "ERROR",
46+
data: Data::Unit,
47+
},
48+
&Variant {
49+
name: "WARN",
50+
data: Data::Unit,
51+
},
52+
&Variant {
53+
name: "INFO",
54+
data: Data::Unit,
55+
},
56+
&Variant {
57+
name: "DEBUG",
58+
data: Data::Unit,
59+
},
60+
&Variant {
61+
name: "TRACE",
62+
data: Data::Unit,
63+
},
64+
],
65+
};
66+
}

source/postcard-schema-ng/src/impls/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ pub mod bytes_v1_0;
5454
#[cfg_attr(docsrs, doc(cfg(feature = "indexmap-v2_0")))]
5555
pub mod indexmap_v2_0;
5656

57+
#[cfg(feature = "log-v0_4")]
58+
#[cfg_attr(docsrs, doc(cfg(feature = "log-v0_4")))]
59+
pub mod log_v0_4;
60+
5761
impl Schema for DataModelType {
5862
const SCHEMA: &'static DataModelType = &DataModelType::Schema;
5963
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#![cfg(feature = "log-v0_4")]
2+
3+
#[test]
4+
fn log_level_smoke() {
5+
for level in [
6+
log_v0_4::Level::Error,
7+
log_v0_4::Level::Warn,
8+
log_v0_4::Level::Info,
9+
log_v0_4::Level::Debug,
10+
log_v0_4::Level::Trace,
11+
] {
12+
super::round_trip_test(level);
13+
}
14+
}
15+
16+
#[test]
17+
fn log_level_filter_smoke() {
18+
for level_filter in [
19+
log_v0_4::LevelFilter::Off,
20+
log_v0_4::LevelFilter::Error,
21+
log_v0_4::LevelFilter::Warn,
22+
log_v0_4::LevelFilter::Info,
23+
log_v0_4::LevelFilter::Debug,
24+
log_v0_4::LevelFilter::Trace,
25+
] {
26+
super::round_trip_test(level_filter);
27+
}
28+
}

source/postcard-schema-ng/tests/impls/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
mod bytes_v1_0;
22
mod indexmap_v2_0;
3+
mod log_v0_4;
34

45
use std::cmp::PartialEq;
56
use std::fmt::Debug;

source/postcard-schema/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ version = "2.0"
102102
optional = true
103103
default-features = false
104104

105+
[dependencies.log_v0_4]
106+
package = "log"
107+
version = "0.4"
108+
optional = true
109+
default-features = false
110+
105111
[dev-dependencies.postcard]
106112
path = "../postcard"
107113
version = "1.0"
@@ -135,6 +141,11 @@ package = "indexmap"
135141
version = "2.0"
136142
features = ["std", "serde"]
137143

144+
[dev-dependencies.log_v0_4]
145+
package = "log"
146+
version = "0.4"
147+
features = ["serde"]
148+
138149
[features]
139150
default = []
140151
use-std = ["serde/std"]
@@ -156,3 +167,4 @@ serde-big-array-v0_5 = ["serde-big-array_v0_5"]
156167
uuid-v1_0 = ["uuid_v1_0"]
157168
bytes-v1_0 = ["bytes_v1_0"]
158169
indexmap-v2_0 = ["indexmap_v2_0"]
170+
log-v0_4 = ["log_v0_4"]
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//! Implementations of the [`Schema`] trait for the `log` crate v0.4
2+
3+
use crate::{
4+
schema::{DataModelType, DataModelVariant, NamedType, NamedVariant},
5+
Schema,
6+
};
7+
8+
impl Schema for log_v0_4::Level {
9+
const SCHEMA: &'static NamedType = &NamedType {
10+
name: "Level",
11+
ty: &DataModelType::Enum(&[
12+
&NamedVariant {
13+
name: "ERROR",
14+
ty: &DataModelVariant::UnitVariant,
15+
},
16+
&NamedVariant {
17+
name: "WARN",
18+
ty: &DataModelVariant::UnitVariant,
19+
},
20+
&NamedVariant {
21+
name: "INFO",
22+
ty: &DataModelVariant::UnitVariant,
23+
},
24+
&NamedVariant {
25+
name: "DEBUG",
26+
ty: &DataModelVariant::UnitVariant,
27+
},
28+
&NamedVariant {
29+
name: "TRACE",
30+
ty: &DataModelVariant::UnitVariant,
31+
},
32+
]),
33+
};
34+
}
35+
36+
impl Schema for log_v0_4::LevelFilter {
37+
const SCHEMA: &'static NamedType = &NamedType {
38+
name: "LevelFilter",
39+
ty: &DataModelType::Enum(&[
40+
&NamedVariant {
41+
name: "OFF",
42+
ty: &DataModelVariant::UnitVariant,
43+
},
44+
&NamedVariant {
45+
name: "ERROR",
46+
ty: &DataModelVariant::UnitVariant,
47+
},
48+
&NamedVariant {
49+
name: "WARN",
50+
ty: &DataModelVariant::UnitVariant,
51+
},
52+
&NamedVariant {
53+
name: "INFO",
54+
ty: &DataModelVariant::UnitVariant,
55+
},
56+
&NamedVariant {
57+
name: "DEBUG",
58+
ty: &DataModelVariant::UnitVariant,
59+
},
60+
&NamedVariant {
61+
name: "TRACE",
62+
ty: &DataModelVariant::UnitVariant,
63+
},
64+
]),
65+
};
66+
}

source/postcard-schema/src/impls/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ pub mod bytes_v1_0;
6161
#[cfg_attr(docsrs, doc(cfg(feature = "indexmap-v2_0")))]
6262
pub mod indexmap_v2_0;
6363

64+
#[cfg(feature = "log-v0_4")]
65+
#[cfg_attr(docsrs, doc(cfg(feature = "log-v0_4")))]
66+
pub mod log_v0_4;
67+
6468
impl Schema for NamedType {
6569
const SCHEMA: &'static NamedType = &NamedType {
6670
name: "NamedType",
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#![cfg(feature = "log-v0_4")]
2+
3+
#[test]
4+
fn log_level_smoke() {
5+
for level in [
6+
log_v0_4::Level::Error,
7+
log_v0_4::Level::Warn,
8+
log_v0_4::Level::Info,
9+
log_v0_4::Level::Debug,
10+
log_v0_4::Level::Trace,
11+
] {
12+
super::round_trip_test(level);
13+
}
14+
}
15+
16+
#[test]
17+
fn log_level_filter_smoke() {
18+
for level_filter in [
19+
log_v0_4::LevelFilter::Off,
20+
log_v0_4::LevelFilter::Error,
21+
log_v0_4::LevelFilter::Warn,
22+
log_v0_4::LevelFilter::Info,
23+
log_v0_4::LevelFilter::Debug,
24+
log_v0_4::LevelFilter::Trace,
25+
] {
26+
super::round_trip_test(level_filter);
27+
}
28+
}

0 commit comments

Comments
 (0)