Struct HasMany

Source
pub struct HasMany<T>(/* private fields */);
Expand description

A “has many” association.

Imagine you have these models:

struct User {
    id: i32,
}

struct Car {
    id: i32,
    user_id: i32,
}

For this setup we say “user has many cars” and “cars have one user”. This is the inverse of a HasOne assocation because the foreign key is on Car instead of User.

This means users can own many cars, but cars can only be owned by one user.

§Example

You can find a complete example of HasMany here.

§Attributes

NameDescriptionDefaultExample
foreign_key_fieldThe name of the foreign key field{name of struct}_idforeign_key_field = user_id
foreign_key_optionalThe foreign key type is optionalNot setforeign_key_optional
root_model_fieldThe name of the field on the associated GraphQL type that holds the database modelN/A (unless using skip)root_model_field = car
graphql_fieldThe name of this field in your GraphQL schema{name of field}graphql_field = country
predicate_methodMethod used to filter child associations. This can be used if you only want to include a subset of the modelsN/A (attribute is optional)predicate_method = a_predicate_method

Additionally it also supports the attributes print, skip, and field_arguments. See the root model docs for more into on those.

§Errors

try_unwrap will never error. If the association wasn’t loaded or wasn’t found it will return Ok(vec![]).

Implementations§

Source§

impl<T> HasMany<T>

Source

pub fn try_unwrap(&self) -> Result<&Vec<T>, Error>

Borrow the loaded values. If no values have been loaded it will return an empty list. It will not return an error.

Trait Implementations§

Source§

impl<T> Association<T> for HasMany<T>

Source§

fn loaded_child(&mut self, child: T)

Store the loaded child on the association.
Source§

fn assert_loaded_otherwise_failed(&mut self)

The association should have been loaded by now, if not store an error inside the association (if applicable for the particular association).
Source§

impl<T: Clone> Clone for HasMany<T>

Source§

fn clone(&self) -> HasMany<T>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for HasMany<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Default for HasMany<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T: Ord> Ord for HasMany<T>

Source§

fn cmp(&self, other: &HasMany<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T: PartialEq> PartialEq for HasMany<T>

Source§

fn eq(&self, other: &HasMany<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PartialOrd> PartialOrd for HasMany<T>

Source§

fn partial_cmp(&self, other: &HasMany<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T: Eq> Eq for HasMany<T>

Source§

impl<T> StructuralPartialEq for HasMany<T>

Auto Trait Implementations§

§

impl<T> Freeze for HasMany<T>

§

impl<T> RefUnwindSafe for HasMany<T>
where T: RefUnwindSafe,

§

impl<T> Send for HasMany<T>
where T: Send,

§

impl<T> Sync for HasMany<T>
where T: Sync,

§

impl<T> Unpin for HasMany<T>
where T: Unpin,

§

impl<T> UnwindSafe for HasMany<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.