pub struct FieldPassword<const MIN: usize, const MAX: usize> { /* private fields */ }Expand description
Password field — stores an Argon2id PHC hash, never the plaintext.
The plaintext is length-validated, then hashed with a random salt.
Debug prints a redacted value. This type intentionally does not implement
Serialize/Deserialize; if a model must be serialized, skip the field
or use a DTO:
ⓘ
#[derive(serde::Serialize)]
struct UserDto {
#[serde(skip)]
password: FieldPassword<8, 128>,
}Serializing the field is a compile error:
ⓘ
fn needs_serialize<T: serde::Serialize>() {}
needs_serialize::<rango_orm_core::FieldPassword<8, 128>>();So is deserializing it:
ⓘ
fn needs_deserialize<T: serde::de::DeserializeOwned>() {}
needs_deserialize::<rango_orm_core::FieldPassword<8, 128>>();Implementations§
Trait Implementations§
impl<const MIN: usize, const MAX: usize> StructuralPartialEq for FieldPassword<MIN, MAX>
Source§impl<const MIN: usize, const MAX: usize> ToSqlValue for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> ToSqlValue for FieldPassword<MIN, MAX>
fn to_sql_value(&self) -> SqlValue
Auto Trait Implementations§
impl<const MIN: usize, const MAX: usize> Forget for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> Freeze for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> RefUnwindSafe for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> Send for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> Sync for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> Unpin for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> UnsafeUnpin for FieldPassword<MIN, MAX>
impl<const MIN: usize, const MAX: usize> UnwindSafe for FieldPassword<MIN, MAX>
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