diesel::prelude

Trait Identifiable

Source
pub trait Identifiable: HasTable {
    type Id: Hash + Eq;

    // Required method
    fn id(self) -> Self::Id;
}
Expand description

This trait indicates that a struct represents a single row in a database table.

This must be implemented to use associations. Additionally, implementing this trait allows you to pass your struct to update (update(&your_struct) is equivalent to update(YourStruct::table().find(&your_struct.primary_key())).

This trait is usually implemented on a reference to a struct, not on the struct itself. It can be derived.

Required Associated Types§

Source

type Id: Hash + Eq

The type of this struct’s identifier.

For single-field primary keys, this is typically &'a i32, or &'a String For composite primary keys, this is typically (&'a i32, &'a i32) or (&'a String, &'a String), etc.

Required Methods§

Source

fn id(self) -> Self::Id

Returns the identifier for this record.

This takes self by value, not reference. This is because composite primary keys are typically stored as multiple fields. We could not return &(String, String) if each string is a separate field.

Because of Rust’s rules about specifying lifetimes, this means that Identifiable is usually implemented on references so that we have a lifetime to use for Id.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§