pub struct Field<T: TypeMarker> { /* 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::from(12345)};
let obj_str = serde_json::to_string(&obj).unwrap();
assert_eq!(obj_str, "{\"id\":\"example_VgwPy6rwatl\"}");
Implementations§
Source§impl<T: TypeMarker> Field<T>
impl<T: TypeMarker> Field<T>
Trait Implementations§
Source§impl<'__expr, T: TypeMarker> AsExpression<BigInt> for &'__expr Field<T>
impl<'__expr, T: TypeMarker> AsExpression<BigInt> for &'__expr Field<T>
Source§type Expression = Bound<BigInt, &'__expr Field<T>>
type Expression = Bound<BigInt, &'__expr Field<T>>
The expression being returned
Source§fn as_expression(self) -> <Self as AsExpression<BigInt>>::Expression
fn as_expression(self) -> <Self as AsExpression<BigInt>>::Expression
Perform the conversion
Source§impl<T: TypeMarker> AsExpression<BigInt> for Field<T>
impl<T: TypeMarker> AsExpression<BigInt> for Field<T>
Source§type Expression = Bound<BigInt, Field<T>>
type Expression = Bound<BigInt, Field<T>>
The expression being returned
Source§fn as_expression(self) -> <Self as AsExpression<BigInt>>::Expression
fn as_expression(self) -> <Self as AsExpression<BigInt>>::Expression
Perform the conversion
Source§impl<'__expr, T: TypeMarker> AsExpression<Nullable<BigInt>> for &'__expr Field<T>
impl<'__expr, T: TypeMarker> AsExpression<Nullable<BigInt>> for &'__expr Field<T>
Source§fn as_expression(self) -> <Self as AsExpression<Nullable<BigInt>>>::Expression
fn as_expression(self) -> <Self as AsExpression<Nullable<BigInt>>>::Expression
Perform the conversion
Source§impl<T: TypeMarker> AsExpression<Nullable<BigInt>> for Field<T>
impl<T: TypeMarker> AsExpression<Nullable<BigInt>> for Field<T>
Source§fn as_expression(self) -> <Self as AsExpression<Nullable<BigInt>>>::Expression
fn as_expression(self) -> <Self as AsExpression<Nullable<BigInt>>>::Expression
Perform the conversion
Source§impl<'de, T: TypeMarker> Deserialize<'de> for Field<T>
impl<'de, T: TypeMarker> 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
Source§impl<T: TypeMarker> Display for Field<T>
impl<T: TypeMarker> Display for Field<T>
Source§impl<T: TypeMarker> Serialize for Field<T>
impl<T: TypeMarker> Serialize for Field<T>
impl<T: Copy + TypeMarker> 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: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.