Skip to content

Commit 676e3b8

Browse files
authored
Merge pull request #107 from str4d/lexicon-integer-conversion
Add direct conversions between the Lexicon integer types and primitives
2 parents 0f514ee + aa18dcc commit 676e3b8

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Diff for: atrium-api/src/types/integer.rs

+30
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ macro_rules! uint {
4040
}
4141
}
4242

43+
impl<const MAX: $primitive> From<$lim<MAX>> for $primitive {
44+
fn from(value: $lim<MAX>) -> Self {
45+
value.0
46+
}
47+
}
48+
4349
/// An unsigned integer with a minimum value of 1 and a maximum value of `MAX`.
4450
#[derive(Clone, Copy, Debug, PartialEq, Eq, serde::Serialize)]
4551
#[repr(transparent)]
@@ -76,6 +82,18 @@ macro_rules! uint {
7682
}
7783
}
7884

85+
impl<const MAX: $primitive> From<$lim_nz<MAX>> for $nz {
86+
fn from(value: $lim_nz<MAX>) -> Self {
87+
value.0
88+
}
89+
}
90+
91+
impl<const MAX: $primitive> From<$lim_nz<MAX>> for $primitive {
92+
fn from(value: $lim_nz<MAX>) -> Self {
93+
value.0.into()
94+
}
95+
}
96+
7997
/// An unsigned integer with a minimum value of `MIN` and a maximum value of `MAX`.
8098
///
8199
/// `MIN` must be non-zero.
@@ -119,6 +137,18 @@ macro_rules! uint {
119137
Self::new(value).map_err(D::Error::custom)
120138
}
121139
}
140+
141+
impl<const MIN: $primitive, const MAX: $primitive> From<$bounded<MIN, MAX>> for $nz {
142+
fn from(value: $bounded<MIN, MAX>) -> Self {
143+
value.0
144+
}
145+
}
146+
147+
impl<const MIN: $primitive, const MAX: $primitive> From<$bounded<MIN, MAX>> for $primitive {
148+
fn from(value: $bounded<MIN, MAX>) -> Self {
149+
value.0.into()
150+
}
151+
}
122152
};
123153
}
124154

0 commit comments

Comments
 (0)