pub struct TSIDDatabaseID<Resource: TSIDResource> { /* private fields */ }Expand description
Represents a prefixed, type-safe, resource-specific ID in your database.
The resource is defined by Resource: when deserializing, that resource must be matched when
reading the prefix. When serializing, that resource will be used to create the prefix.
Internally, this stores a TSID, which is actually a u64. In your database, you should
probably store this u64 instead of the base32-encoded prefixed string. The numbers are
time-ordered so you can sort your database with great performance.
Implementations§
Source§impl<Resource: TSIDResource> TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> TSIDDatabaseID<Resource>
Sourcepub fn from_raw_number(number: u64) -> Self
pub fn from_raw_number(number: u64) -> Self
Parse a number (e.g. from your database) into a TSID. As long as it fits into a u64, it
will be a valid ID, so this can’t error.
pub fn from_integer(number: i64) -> Self
Sourcepub fn to_raw_number(&self) -> u64
pub fn to_raw_number(&self) -> u64
Returns the u64 value of the TSID stored internally. Use this to get a value you can
store in your database.
pub fn into_unknown(&self) -> TSIDDatabaseID<IDUnknown>
Sourcepub fn from_str(v: &str) -> Result<TSIDDatabaseID<Resource>, Error>
pub fn from_str(v: &str) -> Result<TSIDDatabaseID<Resource>, Error>
Attempts to parse a string into a TSIDDatabaseID matching the prefix of the specified
resource. If the string does not contain a prefix, or it contains the wrong one, an error
will be returned instead.
If the resource does not require a prefix, any string is accepted, as long as it is a valid base32-encoded TSID.
Trait Implementations§
Source§impl<'__expr, Resource: TSIDResource> AsExpression<BigInt> for &'__expr TSIDDatabaseID<Resource>
impl<'__expr, Resource: TSIDResource> AsExpression<BigInt> for &'__expr TSIDDatabaseID<Resource>
Source§type Expression = Bound<BigInt, &'__expr TSIDDatabaseID<Resource>>
type Expression = Bound<BigInt, &'__expr TSIDDatabaseID<Resource>>
Source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Source§impl<Resource: TSIDResource> AsExpression<BigInt> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> AsExpression<BigInt> for TSIDDatabaseID<Resource>
Source§type Expression = Bound<BigInt, TSIDDatabaseID<Resource>>
type Expression = Bound<BigInt, TSIDDatabaseID<Resource>>
Source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Source§impl<'__expr, Resource: TSIDResource> AsExpression<Nullable<BigInt>> for &'__expr TSIDDatabaseID<Resource>
impl<'__expr, Resource: TSIDResource> AsExpression<Nullable<BigInt>> for &'__expr TSIDDatabaseID<Resource>
Source§type Expression = Bound<Nullable<BigInt>, &'__expr TSIDDatabaseID<Resource>>
type Expression = Bound<Nullable<BigInt>, &'__expr TSIDDatabaseID<Resource>>
Source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Source§impl<Resource: TSIDResource> AsExpression<Nullable<BigInt>> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> AsExpression<Nullable<BigInt>> for TSIDDatabaseID<Resource>
Source§type Expression = Bound<Nullable<BigInt>, TSIDDatabaseID<Resource>>
type Expression = Bound<Nullable<BigInt>, TSIDDatabaseID<Resource>>
Source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
Source§impl<Resource: Clone + TSIDResource> Clone for TSIDDatabaseID<Resource>
impl<Resource: Clone + TSIDResource> Clone for TSIDDatabaseID<Resource>
Source§fn clone(&self) -> TSIDDatabaseID<Resource>
fn clone(&self) -> TSIDDatabaseID<Resource>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Resource: Debug + TSIDResource> Debug for TSIDDatabaseID<Resource>
impl<Resource: Debug + TSIDResource> Debug for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource> Deref for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> Deref for TSIDDatabaseID<Resource>
Source§impl<'de, Resource: TSIDResource> Deserialize<'de> for TSIDDatabaseID<Resource>
impl<'de, Resource: TSIDResource> Deserialize<'de> for TSIDDatabaseID<Resource>
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>,
Source§impl<Resource: TSIDResource> Display for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> Display for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource> From<TSID> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> From<TSID> for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource> FromSql<BigInt, Pg> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> FromSql<BigInt, Pg> for TSIDDatabaseID<Resource>
Source§impl<Resource: Hash + TSIDResource> Hash for TSIDDatabaseID<Resource>
impl<Resource: Hash + TSIDResource> Hash for TSIDDatabaseID<Resource>
Source§impl<Resource: PartialEq + TSIDResource> PartialEq for TSIDDatabaseID<Resource>
impl<Resource: PartialEq + TSIDResource> PartialEq for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource, __DB, __ST> Queryable<__ST, __DB> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource, __DB, __ST> Queryable<__ST, __DB> for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource> Serialize for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> Serialize for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource> ToSql<BigInt, Pg> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> ToSql<BigInt, Pg> for TSIDDatabaseID<Resource>
Source§impl<Resource: TSIDResource, __DB> ToSql<Nullable<BigInt>, __DB> for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource, __DB> ToSql<Nullable<BigInt>, __DB> for TSIDDatabaseID<Resource>
impl<Resource: Copy + TSIDResource> Copy for TSIDDatabaseID<Resource>
impl<Resource: Eq + TSIDResource> Eq for TSIDDatabaseID<Resource>
impl<Resource: TSIDResource> StructuralPartialEq for TSIDDatabaseID<Resource>
Auto Trait Implementations§
impl<Resource> Freeze for TSIDDatabaseID<Resource>
impl<Resource> RefUnwindSafe for TSIDDatabaseID<Resource>where
Resource: RefUnwindSafe,
impl<Resource> Send for TSIDDatabaseID<Resource>
impl<Resource> Sync for TSIDDatabaseID<Resource>where
Resource: Sync,
impl<Resource> Unpin for TSIDDatabaseID<Resource>where
Resource: Unpin,
impl<Resource> UnwindSafe for TSIDDatabaseID<Resource>where
Resource: 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
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
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
&self to an expression for Diesel’s query builder. Read more