mirror of
https://github.com/uuid-rs/uuid.git
synced 2025-09-30 14:31:03 +00:00
Merge pull request #535 from KodrAus/chore/housekeeping
Make more things const
This commit is contained in:
commit
07f920f24b
106
src/lib.rs
106
src/lib.rs
@ -307,7 +307,7 @@ impl Uuid {
|
||||
/// Currently only the RFC4122 variant is generated by this module.
|
||||
///
|
||||
/// * [Variant Reference](http://tools.ietf.org/html/rfc4122#section-4.1.1)
|
||||
pub fn get_variant(&self) -> Option<Variant> {
|
||||
pub const fn get_variant(&self) -> Option<Variant> {
|
||||
match self.as_bytes()[8] {
|
||||
x if x & 0x80 == 0x00 => Some(Variant::NCS),
|
||||
x if x & 0xc0 == 0x80 => Some(Variant::RFC4122),
|
||||
@ -335,7 +335,7 @@ impl Uuid {
|
||||
/// Returns the version of the UUID.
|
||||
///
|
||||
/// This represents the algorithm used to generate the contents
|
||||
pub fn get_version(&self) -> Option<Version> {
|
||||
pub const fn get_version(&self) -> Option<Version> {
|
||||
let v = self.as_bytes()[6] >> 4;
|
||||
match v {
|
||||
0 if self.is_nil() => Some(Version::Nil),
|
||||
@ -392,19 +392,21 @@ impl Uuid {
|
||||
/// }
|
||||
/// ```
|
||||
pub fn as_fields(&self) -> (u32, u16, u16, &[u8; 8]) {
|
||||
let d1 = u32::from(self.as_bytes()[0]) << 24
|
||||
| u32::from(self.as_bytes()[1]) << 16
|
||||
| u32::from(self.as_bytes()[2]) << 8
|
||||
| u32::from(self.as_bytes()[3]);
|
||||
let bytes = self.as_bytes();
|
||||
|
||||
let d1 = (bytes[0] as u32) << 24
|
||||
| (bytes[1] as u32) << 16
|
||||
| (bytes[2] as u32) << 8
|
||||
| (bytes[3] as u32);
|
||||
|
||||
let d2 =
|
||||
u16::from(self.as_bytes()[4]) << 8 | u16::from(self.as_bytes()[5]);
|
||||
(bytes[4] as u16) << 8 | (bytes[5] as u16);
|
||||
|
||||
let d3 =
|
||||
u16::from(self.as_bytes()[6]) << 8 | u16::from(self.as_bytes()[7]);
|
||||
(bytes[6] as u16) << 8 | (bytes[7] as u16);
|
||||
|
||||
let d4: &[u8; 8] =
|
||||
convert::TryInto::try_into(&self.as_bytes()[8..16]).unwrap();
|
||||
convert::TryInto::try_into(&bytes[8..16]).unwrap();
|
||||
(d1, d2, d3, d4)
|
||||
}
|
||||
|
||||
@ -435,16 +437,16 @@ impl Uuid {
|
||||
/// }
|
||||
/// ```
|
||||
pub fn to_fields_le(&self) -> (u32, u16, u16, &[u8; 8]) {
|
||||
let d1 = u32::from(self.as_bytes()[0])
|
||||
| u32::from(self.as_bytes()[1]) << 8
|
||||
| u32::from(self.as_bytes()[2]) << 16
|
||||
| u32::from(self.as_bytes()[3]) << 24;
|
||||
let d1 = (self.as_bytes()[0] as u32)
|
||||
| (self.as_bytes()[1] as u32) << 8
|
||||
| (self.as_bytes()[2] as u32) << 16
|
||||
| (self.as_bytes()[3] as u32) << 24;
|
||||
|
||||
let d2 =
|
||||
u16::from(self.as_bytes()[4]) | u16::from(self.as_bytes()[5]) << 8;
|
||||
(self.as_bytes()[4] as u16) | (self.as_bytes()[5] as u16) << 8;
|
||||
|
||||
let d3 =
|
||||
u16::from(self.as_bytes()[6]) | u16::from(self.as_bytes()[7]) << 8;
|
||||
(self.as_bytes()[6] as u16) | (self.as_bytes()[7] as u16) << 8;
|
||||
|
||||
let d4: &[u8; 8] =
|
||||
convert::TryInto::try_into(&self.as_bytes()[8..16]).unwrap();
|
||||
@ -470,23 +472,23 @@ impl Uuid {
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
pub fn as_u128(&self) -> u128 {
|
||||
u128::from(self.as_bytes()[0]) << 120
|
||||
| u128::from(self.as_bytes()[1]) << 112
|
||||
| u128::from(self.as_bytes()[2]) << 104
|
||||
| u128::from(self.as_bytes()[3]) << 96
|
||||
| u128::from(self.as_bytes()[4]) << 88
|
||||
| u128::from(self.as_bytes()[5]) << 80
|
||||
| u128::from(self.as_bytes()[6]) << 72
|
||||
| u128::from(self.as_bytes()[7]) << 64
|
||||
| u128::from(self.as_bytes()[8]) << 56
|
||||
| u128::from(self.as_bytes()[9]) << 48
|
||||
| u128::from(self.as_bytes()[10]) << 40
|
||||
| u128::from(self.as_bytes()[11]) << 32
|
||||
| u128::from(self.as_bytes()[12]) << 24
|
||||
| u128::from(self.as_bytes()[13]) << 16
|
||||
| u128::from(self.as_bytes()[14]) << 8
|
||||
| u128::from(self.as_bytes()[15])
|
||||
pub const fn as_u128(&self) -> u128 {
|
||||
(self.as_bytes()[0] as u128) << 120
|
||||
| (self.as_bytes()[1] as u128) << 112
|
||||
| (self.as_bytes()[2] as u128) << 104
|
||||
| (self.as_bytes()[3] as u128) << 96
|
||||
| (self.as_bytes()[4] as u128) << 88
|
||||
| (self.as_bytes()[5] as u128) << 80
|
||||
| (self.as_bytes()[6] as u128) << 72
|
||||
| (self.as_bytes()[7] as u128) << 64
|
||||
| (self.as_bytes()[8] as u128) << 56
|
||||
| (self.as_bytes()[9] as u128) << 48
|
||||
| (self.as_bytes()[10] as u128) << 40
|
||||
| (self.as_bytes()[11] as u128) << 32
|
||||
| (self.as_bytes()[12] as u128) << 24
|
||||
| (self.as_bytes()[13] as u128) << 16
|
||||
| (self.as_bytes()[14] as u128) << 8
|
||||
| (self.as_bytes()[15] as u128)
|
||||
}
|
||||
|
||||
/// Returns a 128bit little-endian value containing the UUID data.
|
||||
@ -515,23 +517,23 @@ impl Uuid {
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
pub fn to_u128_le(&self) -> u128 {
|
||||
u128::from(self.as_bytes()[0])
|
||||
| u128::from(self.as_bytes()[1]) << 8
|
||||
| u128::from(self.as_bytes()[2]) << 16
|
||||
| u128::from(self.as_bytes()[3]) << 24
|
||||
| u128::from(self.as_bytes()[4]) << 32
|
||||
| u128::from(self.as_bytes()[5]) << 40
|
||||
| u128::from(self.as_bytes()[6]) << 48
|
||||
| u128::from(self.as_bytes()[7]) << 56
|
||||
| u128::from(self.as_bytes()[8]) << 64
|
||||
| u128::from(self.as_bytes()[9]) << 72
|
||||
| u128::from(self.as_bytes()[10]) << 80
|
||||
| u128::from(self.as_bytes()[11]) << 88
|
||||
| u128::from(self.as_bytes()[12]) << 96
|
||||
| u128::from(self.as_bytes()[13]) << 104
|
||||
| u128::from(self.as_bytes()[14]) << 112
|
||||
| u128::from(self.as_bytes()[15]) << 120
|
||||
pub const fn to_u128_le(&self) -> u128 {
|
||||
(self.as_bytes()[0] as u128)
|
||||
| (self.as_bytes()[1] as u128) << 8
|
||||
| (self.as_bytes()[2] as u128) << 16
|
||||
| (self.as_bytes()[3] as u128) << 24
|
||||
| (self.as_bytes()[4] as u128) << 32
|
||||
| (self.as_bytes()[5] as u128) << 40
|
||||
| (self.as_bytes()[6] as u128) << 48
|
||||
| (self.as_bytes()[7] as u128) << 56
|
||||
| (self.as_bytes()[8] as u128) << 64
|
||||
| (self.as_bytes()[9] as u128) << 72
|
||||
| (self.as_bytes()[10] as u128) << 80
|
||||
| (self.as_bytes()[11] as u128) << 88
|
||||
| (self.as_bytes()[12] as u128) << 96
|
||||
| (self.as_bytes()[13] as u128) << 104
|
||||
| (self.as_bytes()[14] as u128) << 112
|
||||
| (self.as_bytes()[15] as u128) << 120
|
||||
}
|
||||
|
||||
/// Returns two 64bit values containing the UUID data.
|
||||
@ -555,7 +557,7 @@ impl Uuid {
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
pub fn as_u64_pair(&self) -> (u64, u64) {
|
||||
pub const fn as_u64_pair(&self) -> (u64, u64) {
|
||||
let value = self.as_u128();
|
||||
((value >> 64) as u64, value as u64)
|
||||
}
|
||||
@ -566,8 +568,8 @@ impl Uuid {
|
||||
}
|
||||
|
||||
/// Tests if the UUID is nil.
|
||||
pub fn is_nil(&self) -> bool {
|
||||
self.as_bytes().iter().all(|&b| b == 0)
|
||||
pub const fn is_nil(&self) -> bool {
|
||||
self.as_u128() == 0
|
||||
}
|
||||
|
||||
/// A buffer that can be used for `encode_...` calls, that is
|
||||
|
Loading…
x
Reference in New Issue
Block a user