pub trait MeshBuilder: ClosedInput {
    type Builder: SurfaceBuilder<Error = Self::Error, Vertex = Self::Vertex, Facet = Self::Facet>;
    type Vertex;
    type Facet: Default;

    fn surface_with<F, T, E>(&mut self, f: F) -> Result<T, Self::Error>
        Self::Error: From<E>,
        F: FnOnce(&mut Self::Builder) -> Result<T, E>
; fn build(self) -> Result<Self::Commit, Self::Error> { ... } }
Expand description

Incremental polygonal mesh builder.

This trait exposes types that allow for mesh data structures to be constructed incrementally from surfaces and facets. A surface is a collection of vertices and facets connecting those vertices and typically describes a manifold. A facet is the connectivity between vertices in a surface. Facets may also include associated data.

Construction is hierarchical, beginning with a surface and its vertices and then facets. The association between a surface, its vertices, and facets is enforced by the API, which accepts functions that operate on increasingly specific builder types. The build function is used to complete the construction of a mesh.

Builders may emit errors at any stage and errors depend on the implementation of the builder types (and by extension the details of the underlying data structure).

Required Associated Types

Required Methods

Constructs a surface.

The given function is invoked with a SurfaceBuilder, which can be used to insert vertices and construct facets.

Provided Methods

Builds the mesh.

The builder is consumed and a mesh with the constructed surfaces and facets is produced.


Returns a latent error if the constructed surfaces and facets are incompatible with the underlying data structure. May return other errors depending on the details of the implementation.