pub struct CMapBuilder<const D: usize> { /* private fields */ }Expand description
§Combinatorial map builder structure
§Example
use honeycomb_core::cmap::{CMap2, CMap3, CMapBuilder};
let builder_2d = CMapBuilder::<2>::from_n_darts(10);
let map_2d: CMap2<f64> = builder_2d.build()?;
assert_eq!(map_2d.n_darts(), 11); // 10 + null dart = 11
let builder_3d = CMapBuilder::<3>::from_n_darts(10);
let map_3d: CMap3<f64> = builder_3d.build()?;
assert_eq!(map_3d.n_darts(), 11); // 10 + null dart = 11Implementations§
Source§impl<const D: usize> CMapBuilder<D>
§Regular methods
impl<const D: usize> CMapBuilder<D>
§Regular methods
Sourcepub fn from_n_darts_and_attributes(n_darts: usize, other: Self) -> Self
pub fn from_n_darts_and_attributes(n_darts: usize, other: Self) -> Self
Create a builder structure for a map with a set number of darts and the attribute set of another builder.
Sourcepub fn from_n_darts(n_darts: usize) -> Self
pub fn from_n_darts(n_darts: usize) -> Self
Create a builder structure for a map with a set number of darts.
Sourcepub fn from_cmap_file(file_path: impl AsRef<Path> + Debug) -> Self
pub fn from_cmap_file(file_path: impl AsRef<Path> + Debug) -> Self
Create a builder structure from a cmap file.
§Panics
This function may panic if the file cannot be loaded, or basic section parsing fails.
Sourcepub fn from_vtk_file(file_path: impl AsRef<Path> + Debug) -> Self
pub fn from_vtk_file(file_path: impl AsRef<Path> + Debug) -> Self
Create a builder structure from a VTK file.
§Panics
This function may panic if the file cannot be loaded.
Sourcepub fn add_attribute<A: AttributeBind + 'static>(self) -> Self
pub fn add_attribute<A: AttributeBind + 'static>(self) -> Self
Add the attribute A to the attributes the created map will contain.
§Usage
Each attribute must be uniquely typed, i.e. a single type or struct cannot be added twice to the builder / map. This includes type aliases as these are not distinct from the compiler’s perspective.
If you have multiple attributes that are represented using the same data type, you may want to look into the Newtype pattern here and here
Sourcepub fn build<T: CoordsFloat>(
self,
) -> Result<<Self as Builder<T>>::MapType, BuilderError>where
Self: Builder<T>,
pub fn build<T: CoordsFloat>(
self,
) -> Result<<Self as Builder<T>>::MapType, BuilderError>where
Self: Builder<T>,
Consumes the builder and produce a combinatorial map object.
§Return / Errors
This method return a Result taking the following values:
Ok(map: _)if generation was successful,Err(BuilderError)otherwise. SeeBuilderErrorfor possible failures.
Depending on the dimension D associated with this structure, the map will either be a
CMap2 or CMap3. If D isn’t 2 or 3, this method will not be available as it uses a
trait not implemented for other values of D. This is necessary to handle the multiple
return types as Rust is slightly lacking in terms of comptime capabilities.
§Panics
This method may panic if type casting goes wrong during parameters parsing.
Auto Trait Implementations§
impl<const D: usize> Freeze for CMapBuilder<D>
impl<const D: usize> !RefUnwindSafe for CMapBuilder<D>
impl<const D: usize> Send for CMapBuilder<D>
impl<const D: usize> Sync for CMapBuilder<D>
impl<const D: usize> Unpin for CMapBuilder<D>
impl<const D: usize> !UnwindSafe for CMapBuilder<D>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more