Struct former::HashSetSubformer
source · pub struct HashSetSubformer<E, Container, Context, ContainerEnd>where
E: Eq + Hash,
Container: HashSetLike<E> + Default,
ContainerEnd: ToSuperFormer<Container, 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, Container, Context, ContainerEnd> HashSetSubformer<E, Container, Context, ContainerEnd>where
E: Eq + Hash,
Container: HashSetLike<E> + Default,
ContainerEnd: ToSuperFormer<Container, Context>,
impl<E, Container, Context, ContainerEnd> HashSetSubformer<E, Container, Context, ContainerEnd>where
E: Eq + Hash,
Container: HashSetLike<E> + Default,
ContainerEnd: ToSuperFormer<Container, Context>,
sourcepub fn new(
) -> HashSetSubformer<E, Container, Container, impl ToSuperFormer<Container, Container>>
pub fn new( ) -> HashSetSubformer<E, Container, Container, impl ToSuperFormer<Container, Container>>
Initializes a new instance of the builder with default settings.
This method provides a starting point for building a HashSetLike container using
a fluent interface. It sets up an empty container ready to be populated.
§Returns
A new instance of HashSetSubformer with no elements.
sourcepub fn begin(
context: Option<Context>,
container: Option<Container>,
on_end: ContainerEnd
) -> Self
pub fn begin( context: Option<Context>, container: Option<Container>, on_end: ContainerEnd ) -> Self
Begins the building process with an optional context and container.
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.container: An optional initial container to populate.on_end: A handler to be called at the end of the building process.
sourcepub fn end(self) -> Context
pub fn end(self) -> Context
Finalizes the building process and returns the constructed container or a context.
This method concludes the building process by applying the on_end handler to transform
the container 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 container or a context that incorporates the container.
sourcepub fn replace(self, container: Container) -> Self
pub fn replace(self, container: Container) -> Self
Replaces the current container 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
container: The new container to use for subsequent builder operations.
§Returns
The builder instance with the container replaced, enabling further chained operations.
source§impl<E, Container, Context, ContainerEnd> HashSetSubformer<E, Container, Context, ContainerEnd>where
E: Eq + Hash,
Container: HashSetLike<E> + Default,
ContainerEnd: ToSuperFormer<Container, Context>,
impl<E, Container, Context, ContainerEnd> HashSetSubformer<E, Container, Context, ContainerEnd>where
E: Eq + Hash,
Container: HashSetLike<E> + Default,
ContainerEnd: ToSuperFormer<Container, Context>,
sourcepub fn insert<E2>(self, e: E2) -> Selfwhere
E2: Into<E>,
pub fn insert<E2>(self, e: E2) -> Selfwhere
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 container’s behavior.
§Parameters
e: The element to insert into the set.
§Returns
Some(e)if the element was replaced.Noneif the element was newly inserted without replacing any existing element. #[ inline( always ) ]