Struct cryptid_rs::Field
source · pub struct Field<T: TypeMarker + Debug> { /* private fields */ }Expand description
An generic type-safe object ID field (a wrapped u64).
When serialized with Serde, the number is automatically encrypted and encoded
into a URL safe string. Deserialization decodes and decrypts the string back
to an integer. The string has an object type specific prefix defined in
the type marker’s fn name().
Traits are also provided for Diesel compatibility with Postgres BigInt fields.
§Examples
use cryptid_rs;
use serde::{Serialize, Deserialize};
use serde_json;
#[derive(Clone, Copy, Debug)]
pub struct ExampleIdMarker;
impl cryptid_rs::TypeMarker for ExampleIdMarker {
fn name() -> &'static str { "example" }
}
type ExampleId = cryptid_rs::Field<ExampleIdMarker>;
#[derive(serde::Serialize)]
struct Example {
pub id: ExampleId,
}
cryptid_rs::Config::set_global(cryptid_rs::Config::new(b"your-secure-key"));
let obj = Example {id: ExampleId::new(12345)};
let obj_str = serde_json::to_string(&obj).unwrap();
assert_eq!(obj_str, "{\"id\":\"example_VgwPy6rwatl\"}");Implementations§
Trait Implementations§
source§impl<'__expr, T: TypeMarker + Debug> AsExpression<BigInt> for &'__expr Field<T>
impl<'__expr, T: TypeMarker + Debug> AsExpression<BigInt> for &'__expr Field<T>
§type Expression = Bound<BigInt, &'__expr Field<T>>
type Expression = Bound<BigInt, &'__expr Field<T>>
The expression being returned
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Perform the conversion
source§impl<T: TypeMarker + Debug> AsExpression<BigInt> for Field<T>
impl<T: TypeMarker + Debug> AsExpression<BigInt> for Field<T>
§type Expression = Bound<BigInt, Field<T>>
type Expression = Bound<BigInt, Field<T>>
The expression being returned
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Perform the conversion
source§impl<'__expr, T: TypeMarker + Debug> AsExpression<Nullable<BigInt>> for &'__expr Field<T>
impl<'__expr, T: TypeMarker + Debug> AsExpression<Nullable<BigInt>> for &'__expr Field<T>
§type Expression = Bound<Nullable<BigInt>, &'__expr Field<T>>
type Expression = Bound<Nullable<BigInt>, &'__expr Field<T>>
The expression being returned
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Perform the conversion
source§impl<T: TypeMarker + Debug> AsExpression<Nullable<BigInt>> for Field<T>
impl<T: TypeMarker + Debug> AsExpression<Nullable<BigInt>> for Field<T>
§type Expression = Bound<Nullable<BigInt>, Field<T>>
type Expression = Bound<Nullable<BigInt>, Field<T>>
The expression being returned
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Perform the conversion
source§impl<'de, T: TypeMarker + Debug> Deserialize<'de> for Field<T>
impl<'de, T: TypeMarker + Debug> Deserialize<'de> for Field<T>
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl<T: Copy + TypeMarker + Debug> Copy for Field<T>
Auto Trait Implementations§
impl<T> Freeze for Field<T>
impl<T> RefUnwindSafe for Field<T>where
T: RefUnwindSafe,
impl<T> Send for Field<T>where
T: Send,
impl<T> Sync for Field<T>where
T: Sync,
impl<T> Unpin for Field<T>where
T: Unpin,
impl<T> UnwindSafe for Field<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
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T, ST, DB> FromSqlRow<ST, DB> for Twhere
T: Queryable<ST, DB>,
ST: SqlTypeOrSelectable,
DB: Backend,
<T as Queryable<ST, DB>>::Row: FromStaticSqlRow<ST, DB>,
impl<T, ST, DB> FromSqlRow<ST, DB> for Twhere
T: Queryable<ST, DB>,
ST: SqlTypeOrSelectable,
DB: Backend,
<T as Queryable<ST, DB>>::Row: FromStaticSqlRow<ST, DB>,
source§impl<T, ST, DB> FromStaticSqlRow<ST, DB> for T
impl<T, ST, DB> FromStaticSqlRow<ST, DB> for T
source§impl<T> IntoSql for T
impl<T> IntoSql for T
source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
Convert
self to an expression for Diesel’s query builder. Read moresource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
Convert
&self to an expression for Diesel’s query builder. Read moresource§impl<T, ST, DB> StaticallySizedRow<ST, DB> for T
impl<T, ST, DB> StaticallySizedRow<ST, DB> for T
source§const FIELD_COUNT: usize = <ST as crate::util::TupleSize>::SIZE
const FIELD_COUNT: usize = <ST as crate::util::TupleSize>::SIZE
The number of fields that this type will consume.