pub struct HashSetSubformer<E, Formed, Context, ContainerEnd>
where E: Eq + Hash, Formed: HashSetLike<E> + Default, ContainerEnd: FormingEnd<Formed, Context>,
{ /* private fields */ }
Expand description

Facilitates building HashSetLike containers with a fluent API.

HashSetSubformer leverages the HashSetLike trait to enable a concise and expressive way of populating HashSet-like containers. It exemplifies the crate’s builder pattern variation for sets.

§Example Usage

Using HashSetSubformer to populate a HashSet within a struct:


#[ derive( Debug, PartialEq, former::Former ) ]
pub struct StructWithSet
{
  #[ subformer( former::HashSetSubformer ) ]
  set : std::collections::HashSet< &'static str >,
}

let instance = StructWithSet::former()
.set()
  .insert( "apple" )
  .insert( "banana" )
  .end()
.form();

assert_eq!(instance, StructWithSet { set : hset![ "apple", "banana" ] });

Implementations§

source§

impl<E, Formed, Context, ContainerEnd> HashSetSubformer<E, Formed, Context, ContainerEnd>
where E: Eq + Hash, Formed: HashSetLike<E> + Default, ContainerEnd: FormingEnd<Formed, Context>,

source

pub fn form(self) -> Formed

Form current former into target structure.

source

pub fn begin( formed: Option<Formed>, context: Option<Context>, on_end: ContainerEnd ) -> Self

Begins the building process with an optional context and formed.

This method is typically called internally by the builder but can be used directly to initialize the builder with specific contexts or containers.

§Parameters
  • context: An optional context for the building process.
  • formed: An optional initial formed to populate.
  • on_end: A handler to be called at the end of the building process.
source

pub fn end(self) -> Context

Finalizes the building process and returns the constructed formed or a context.

This method concludes the building process by applying the on_end handler to transform the formed or incorporate it into a given context. It’s typically called at the end of the builder chain to retrieve the final product of the building process.

§Returns

Depending on the on_end handler’s implementation, this method can return either the constructed formed or a context that incorporates the formed.

source

pub fn replace(self, formed: Formed) -> Self

Replaces the current formed with a new one.

This method allows for replacing the entire set being built with a different one. It can be useful in scenarios where a pre-populated set needs to be modified or replaced entirely during the building process.

§Parameters
  • formed: The new formed to use for subsequent builder operations.
§Returns

The builder instance with the formed replaced, enabling further chained operations.

source§

impl<E, Formed> HashSetSubformer<E, Formed, Formed, ReturnFormed>
where E: Eq + Hash, Formed: HashSetLike<E> + Default,

source

pub fn new() -> Self

Initializes a new instance of the builder with default settings.

This method provides a starting point for building a HashSetLike formed using a fluent interface. It sets up an empty formed ready to be populated.

§Returns

A new instance of HashSetSubformer with no elements.

source§

impl<E, Formed, Context, ContainerEnd> HashSetSubformer<E, Formed, Context, ContainerEnd>
where E: Eq + Hash, Formed: HashSetLike<E> + Default, ContainerEnd: FormingEnd<Formed, Context>,

source

pub fn insert<E2>(self, element: E2) -> Self
where E2: Into<E>,

Inserts an element into the set, possibly replacing an existing element.

This method ensures that the set contains the given element, and if the element was already present, it might replace it depending on the formed’s behavior.

§Parameters
  • element: The element to insert into the set.
§Returns
  • Some(element) if the element was replaced.
  • None if the element was newly inserted without replacing any existing element.

Trait Implementations§

source§

impl<E, Formed, Context: Debug, ContainerEnd> Debug for HashSetSubformer<E, Formed, Context, ContainerEnd>
where E: Eq + Hash + Debug, Formed: HashSetLike<E> + Default + Debug, ContainerEnd: FormingEnd<Formed, Context> + Debug,

source§

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

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

impl<E, Formed, Context: Default, ContainerEnd> Default for HashSetSubformer<E, Formed, Context, ContainerEnd>
where E: Eq + Hash + Default, Formed: HashSetLike<E> + Default + Default, ContainerEnd: FormingEnd<Formed, Context> + Default,

source§

fn default() -> HashSetSubformer<E, Formed, Context, ContainerEnd>

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

Auto Trait Implementations§

§

impl<E, Formed, Context, ContainerEnd> Freeze for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: Freeze, Context: Freeze, Formed: Freeze,

§

impl<E, Formed, Context, ContainerEnd> RefUnwindSafe for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: RefUnwindSafe, Context: RefUnwindSafe, E: RefUnwindSafe, Formed: RefUnwindSafe,

§

impl<E, Formed, Context, ContainerEnd> Send for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: Send, Context: Send, E: Send, Formed: Send,

§

impl<E, Formed, Context, ContainerEnd> Sync for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: Sync, Context: Sync, E: Sync, Formed: Sync,

§

impl<E, Formed, Context, ContainerEnd> Unpin for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: Unpin, Context: Unpin, E: Unpin, Formed: Unpin,

§

impl<E, Formed, Context, ContainerEnd> UnwindSafe for HashSetSubformer<E, Formed, Context, ContainerEnd>
where ContainerEnd: UnwindSafe, Context: UnwindSafe, E: UnwindSafe, Formed: 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<S> AssignWithType for S

source§

fn assign_with_type<T, IntoT>(&mut self, component: IntoT)
where IntoT: Into<T>, S: ComponentAssign<T, IntoT>,

Function to set value of a component by its type.
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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.