Skip to content

Commit a88a1d1

Browse files
committed
feat: derive Facet if facet feature is active
1 parent 25da208 commit a88a1d1

3 files changed

Lines changed: 143 additions & 33 deletions

File tree

Cargo.lock

Lines changed: 100 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: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,53 @@
11
[package]
2-
name = "ordered-float"
3-
version = "5.1.0"
4-
authors = [
2+
name = "ordered-float"
3+
version = "5.1.0"
4+
authors = [
55
"Jonathan Reem <jonathan.reem@gmail.com>",
66
"Matt Brubeck <mbrubeck@limpet.net>",
77
]
8-
license = "MIT"
8+
license = "MIT"
99
description = "Wrappers for total ordering on floats"
10-
repository = "https://github.com/reem/rust-ordered-float"
11-
readme = "README.md"
12-
keywords = ["no_std", "ord", "f64", "f32", "sort"]
13-
categories = ["science", "rust-patterns", "no-std"]
14-
edition = "2021"
10+
repository = "https://github.com/reem/rust-ordered-float"
11+
readme = "README.md"
12+
keywords = ["no_std", "ord", "f64", "f32", "sort"]
13+
categories = ["science", "rust-patterns", "no-std"]
14+
edition = "2021"
1515
rust-version = "1.63"
1616

1717
[dependencies]
18-
arbitrary = { version = "1.0.0", optional = true }
19-
borsh = { version = "1.2.0", optional = true, default-features = false }
20-
bytemuck = { version = "1.12.2", optional = true, default-features = false }
18+
arbitrary = { version = "1.0.0", optional = true }
19+
borsh = { version = "1.2.0", optional = true, default-features = false }
20+
bytemuck = { version = "1.12.2", optional = true, default-features = false }
2121
derive-visitor = { version = "0.4.0", optional = true }
22-
num-cmp = { version = "0.1.0", optional = true }
22+
num-cmp = { version = "0.1.0", optional = true }
2323
num-traits = { version = "0.2.9", default-features = false }
24-
proptest = { version = "1.0.0", optional = true }
25-
rand = { version = "0.8.3", optional = true, default-features = false }
26-
rkyv = { version = "0.7.41", optional = true, default-features = false, features = ["rend"] }
27-
schemars = { version = "0.8.8", optional = true }
28-
serde = { version = "1.0", optional = true, default-features = false }
29-
speedy = { version = "0.8.3", optional = true, default-features = false }
24+
proptest = { version = "1.0.0", optional = true }
25+
rand = { version = "0.8.3", optional = true, default-features = false }
26+
rkyv = { version = "0.7.41", optional = true, default-features = false, features = [
27+
"rend",
28+
] }
29+
schemars = { version = "0.8.8", optional = true }
30+
serde = { version = "1.0", optional = true, default-features = false }
31+
speedy = { version = "0.8.3", optional = true, default-features = false }
32+
facet = { version = "0.42", optional = true, default-features = false, features = [
33+
"alloc",
34+
] }
3035

3136
[dev-dependencies]
3237
serde_test = "1.0"
3338

3439
[features]
35-
default = ["std"]
36-
std = ["num-traits/std"]
37-
libm = ["num-traits/libm"]
38-
serde = ["dep:serde", "rand?/serde1"]
40+
default = ["std"]
41+
std = ["num-traits/std"]
42+
libm = ["num-traits/libm"]
43+
serde = ["dep:serde", "rand?/serde1"]
44+
facet = ["dep:facet"]
3945
randtest = ["rand/std", "rand/std_rng"]
40-
rkyv = ["rkyv_32"]
41-
rkyv_16 = ["dep:rkyv", "rkyv?/size_16"]
42-
rkyv_32 = ["dep:rkyv", "rkyv?/size_32"]
43-
rkyv_64 = ["dep:rkyv", "rkyv?/size_64"]
44-
rkyv_ck = ["rkyv?/validation"]
46+
rkyv = ["rkyv_32"]
47+
rkyv_16 = ["dep:rkyv", "rkyv?/size_16"]
48+
rkyv_32 = ["dep:rkyv", "rkyv?/size_32"]
49+
rkyv_64 = ["dep:rkyv", "rkyv?/size_64"]
50+
rkyv_ck = ["rkyv?/validation"]
51+
52+
[patch.crates-io]
53+
facet = { git = "https://github.com/facet-rs/facet" }

src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ use core::ops::{
2323
};
2424
use core::str::FromStr;
2525

26+
#[cfg(feature = "facet")]
27+
use facet::Facet;
2628
pub use num_traits::float::FloatCore;
2729
#[cfg(any(feature = "std", feature = "libm"))]
2830
use num_traits::real::Real;
@@ -88,7 +90,8 @@ pub use impl_rand::{UniformNotNan, UniformOrdered};
8890
doc = "[`bytemuck`]: https://docs.rs/bytemuck/1/"
8991
)]
9092
#[derive(Default, Clone, Copy)]
91-
#[repr(transparent)]
93+
#[cfg_attr(feature = "facet", derive(Facet))]
94+
#[cfg_attr(feature = "facet", facet(transparent))]
9295
pub struct OrderedFloat<T>(pub T);
9396

9497
#[cfg(feature = "derive-visitor")]
@@ -1246,6 +1249,8 @@ impl<T: FloatCore + Num> Num for OrderedFloat<T> {
12461249
doc = "[`bytemuck`]: https://docs.rs/bytemuck/1/"
12471250
)]
12481251
#[derive(PartialOrd, PartialEq, Default, Clone, Copy)]
1252+
#[cfg_attr(feature = "facet", derive(Facet))]
1253+
#[cfg_attr(feature = "facet", facet(transparent))]
12491254
#[repr(transparent)]
12501255
pub struct NotNan<T>(T);
12511256

0 commit comments

Comments
 (0)