pub struct VectorSubformer<E, Formed, Context, ContainerEnd>
where Formed: VectorLike<E> + Default, ContainerEnd: FormingEnd<Formed, Context>,
{ /* private fields */ }
Expand description

A builder for constructing VectorLike containers, facilitating a fluent and flexible interface.

VectorSubformer leverages the VectorLike trait to enable the construction and manipulation of vector-like containers in a builder pattern style, promoting readability and ease of use.

§Example

#[ derive( Debug, PartialEq, former::Former ) ]
pub struct StructWithVec
{
  #[ subformer( former::VectorSubformer ) ]
  vec : Vec< &'static str >,
}

let instance = StructWithVec::former()
.vec()
  .push( "apple" )
  .push( "banana" )
  .end()
.form();

assert_eq!( instance, StructWithVec { vec: vec![ "apple", "banana" ] } );

Implementations§

source§

impl<E, Formed, Context, ContainerEnd> VectorSubformer<E, Formed, Context, ContainerEnd>
where Formed: VectorLike<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, optionally initializing with a context and formed.

source

pub fn end(self) -> Context

Finalizes the building process, returning the formed or a context incorporating it.

source

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

Replaces the current formed with a provided one, allowing for a reset or redirection of the building process.

source§

impl<E, Formed> VectorSubformer<E, Formed, Formed, ReturnFormed>
where Formed: VectorLike<E> + Default,

source

pub fn new() -> Self

Initializes a new VectorSubformer instance, starting with an empty formed. This function serves as the entry point for the builder pattern.

§Returns

A new instance of VectorSubformer with an empty internal formed.

source§

impl<E, Formed, Context, ContainerEnd> VectorSubformer<E, Formed, Context, ContainerEnd>
where Formed: VectorLike<E> + Default, ContainerEnd: FormingEnd<Formed, Context>,

source

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

Appends an element to the end of the formed, expanding the internal collection.

Trait Implementations§

source§

impl<E: Debug, Formed, Context: Debug, ContainerEnd> Debug for VectorSubformer<E, Formed, Context, ContainerEnd>
where Formed: VectorLike<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: Default, Formed, Context: Default, ContainerEnd> Default for VectorSubformer<E, Formed, Context, ContainerEnd>
where Formed: VectorLike<E> + Default + Default, ContainerEnd: FormingEnd<Formed, Context> + Default,

source§

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

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

impl<E, Formed, Context, End> FormerBegin<Formed, Formed, Context> for VectorSubformer<E, Formed, Context, End>
where End: FormingEnd<Formed, Context>, Formed: VectorLike<E> + Default,

§

type End = End

End - Specifies the trait bound for the closure or handler that gets called at the completion of the subforming process. This type must implement the FormingEnd<Formed, Context> trait, which defines how the final transformation or construction of Formed is handled, potentially using the provided Context. Read more
source§

fn _begin(formed: Option<Formed>, context: Option<Context>, on_end: End) -> Self

Initializes the subforming process by setting the context and specifying an on_end completion handler. Read more

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<E, Formed, Context, ContainerEnd> UnwindSafe for VectorSubformer<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.