pub enum RoleValue<T>where
T: RoleVariant,{
Role(T),
Raw(usize),
}Expand description
The enum holding value of a role.
Variants§
Role(T)
Variant that can accept role enum variants.
Raw(usize)
Variant that can accept literal integer values.
Implementations§
source§impl<T> RoleValue<T>where
T: RoleVariant,
impl<T> RoleValue<T>where
T: RoleVariant,
sourcepub fn from_role(role: T) -> Self
pub fn from_role(role: T) -> Self
Creates a new RoleValue instance from a role without performing the validation.
§Examples
use bit_roles::{
BitRole,
RoleValue,
};
#[derive(Debug, BitRole, Copy, Clone)]
enum MyRole {
None = 0,
Staff = 1,
}
let value = RoleValue::from_role(MyRole::Staff);
assert_eq!(value, RoleValue::Role(MyRole::Staff));role- The role variant.
sourcepub fn try_from_role(role: T) -> Result<Self, RoleError>
pub fn try_from_role(role: T) -> Result<Self, RoleError>
Validates a role and creates a new RoleValue instance from a it.
§Examples
use bit_roles::{
BitRole,
RoleValue,
};
#[derive(Debug, BitRole, Copy, Clone)]
enum MyRole {
None = 0,
Staff = 1,
}
let value = RoleValue::try_from_role(MyRole::Staff).expect("invalid role");
assert_eq!(value, RoleValue::Role(MyRole::Staff));role- The role variant.
sourcepub fn from_usize(value: usize) -> Self
pub fn from_usize(value: usize) -> Self
Creates a new RoleValue instance from an integer value without performing the validation.
§Examples
use bit_roles::{
BitRole,
RoleValue,
};
#[derive(Debug, BitRole, Copy, Clone)]
enum MyRole {
None = 0,
Staff = 1,
}
let value: RoleValue<MyRole> = RoleValue::from_usize(4);
assert_eq!(value, RoleValue::Raw(4));value- The magnitude.
sourcepub fn try_from_usize(value: usize) -> Result<Self, RoleError>
pub fn try_from_usize(value: usize) -> Result<Self, RoleError>
Validates an integer value and creates a new RoleValue instance from it.
§Examples
use bit_roles::{
BitRole,
RoleValue,
};
#[derive(Debug, BitRole, Copy, Clone)]
enum MyRole {
None = 0,
Staff = 1,
}
let value: RoleValue<MyRole> = RoleValue::try_from_usize(4).expect("invalid value");
assert_eq!(value, RoleValue::Raw(4));value- The magnitude.
Trait Implementations§
source§impl<T> PartialEq for RoleValue<T>where
T: RoleVariant,
impl<T> PartialEq for RoleValue<T>where
T: RoleVariant,
impl<T> Copy for RoleValue<T>where
T: RoleVariant + Copy,
impl<T> Eq for RoleValue<T>where
T: RoleVariant,
Auto Trait Implementations§
impl<T> Freeze for RoleValue<T>where
T: Freeze,
impl<T> RefUnwindSafe for RoleValue<T>where
T: RefUnwindSafe,
impl<T> Send for RoleValue<T>where
T: Send,
impl<T> Sync for RoleValue<T>where
T: Sync,
impl<T> Unpin for RoleValue<T>where
T: Unpin,
impl<T> UnwindSafe for RoleValue<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more