pub struct FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Face<<B as Parametric>::Data>> + Parametric, { /* private fields */ }
Expand description
View of a face entity.
Faces are notated by the path of their associated ring. A triangular face with a perimeter formed by vertices $A$, $B$, and $C$ is notated $\overrightarrow{\{A,B,C\}}$. While the precise ordering of vertices is determined by a face’s leading arc, the same face may be notated using rotations of this set, such as $\overrightarrow{\{B,C,A\}}$.
See the graph
module documentation for more information about views.
Implementations
sourceimpl<B, M> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<<B as Parametric>::Data>> + Parametric,
impl<B, M> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<<B as Parametric>::Data>> + Parametric,
sourceimpl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourcepub fn into_ref(self) -> FaceView<&'a M>
pub fn into_ref(self) -> FaceView<&'a M>
Examples
use decorum::R64;
use nalgebra::Point3;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::cube::Cube;
use plexus::primitive::generate::Position;
type E3 = Point3<R64>;
let mut graph: MeshGraph<E3> = Cube::new().polygons::<Position<E3>>().collect();
let key = graph.faces().nth(0).unwrap().key();
let face = graph
.face_mut(key)
.unwrap()
.extrude_with_offset(1.0)
.unwrap()
.into_ref();
// This would not be possible without conversion into an immutable view.
let _ = face.into_arc();
let _ = face.into_arc().into_next_arc();
sourceimpl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
Reachable API.
sourceimpl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn centroid(&self) -> VertexPosition<G> where
G: FaceCentroid,
G::Vertex: AsPosition,
pub fn normal(&self) -> Result<Vector<VertexPosition<G>>, GraphError> where
G: FaceNormal,
G::Vertex: AsPosition,
pub fn plane(&self) -> Result<Plane<VertexPosition<G>>, GraphError> where
G: FacePlane,
G::Vertex: AsPosition,
VertexPosition<G>: FiniteDimensional<N = U3>,
sourceimpl<B, M, G> FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorageMut<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorageMut<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn flatten(&mut self) -> Result<(), GraphError> where
G: FacePlane,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace + FiniteDimensional<N = U3>,
pub fn flatten(&mut self) -> Result<(), GraphError> where
G: FacePlane,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace + FiniteDimensional<N = U3>,
Flattens the face by translating the positions of all vertices into a best-fit plane.
Errors
Returns an error if a best-fit plane could not be computed or positions could not be translated into the plane.
sourceimpl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn adjacent_arcs(&self) -> impl Clone + Iterator<Item = ArcView<&B::Target>>
pub fn adjacent_arcs(&self) -> impl Clone + Iterator<Item = ArcView<&B::Target>>
Gets an iterator of views over the arcs in the face’s ring.
sourcepub fn adjacent_faces(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
pub fn adjacent_faces(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
Gets an iterator of views over adjacent faces.
sourceimpl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<'a, B, M, G> FaceView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn into_adjacent_vertices(
self
) -> impl Clone + Iterator<Item = VertexView<&'a M>>
sourceimpl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn adjacent_vertices(
&self
) -> impl Clone + Iterator<Item = VertexView<&B::Target>>
pub fn adjacent_vertices(
&self
) -> impl Clone + Iterator<Item = VertexView<&B::Target>>
Gets an iterator of views over the vertices that form the face.
sourceimpl<'a, M, G> FaceView<&'a mut M> where
M: AsStorageMut<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> FaceView<&'a mut M> where
M: AsStorageMut<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
pub fn into_adjacent_arc_orphans(self) -> impl Iterator<Item = ArcOrphan<'a, G>>
sourceimpl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorageMut<Arc<<B as Parametric>::Data>> + AsStorage<Face<<B as Parametric>::Data>> + Consistent + Parametric,
impl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorageMut<Arc<<B as Parametric>::Data>> + AsStorage<Face<<B as Parametric>::Data>> + Consistent + Parametric,
sourcepub fn adjacent_arc_orphans(
&mut self
) -> impl Iterator<Item = ArcOrphan<'_, <B as Parametric>::Data>>
pub fn adjacent_arc_orphans(
&mut self
) -> impl Iterator<Item = ArcOrphan<'_, <B as Parametric>::Data>>
Gets an iterator of orphan views over the arcs in the face’s ring.
sourceimpl<'a, M, G> FaceView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorageMut<Face<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> FaceView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorageMut<Face<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
pub fn into_adjacent_face_orphans(
self
) -> impl Iterator<Item = FaceOrphan<'a, G>>
sourceimpl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorageMut<Face<<B as Parametric>::Data>> + Consistent + Parametric,
impl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorageMut<Face<<B as Parametric>::Data>> + Consistent + Parametric,
sourcepub fn adjacent_face_orphans(
&mut self
) -> impl Iterator<Item = FaceOrphan<'_, <B as Parametric>::Data>>
pub fn adjacent_face_orphans(
&mut self
) -> impl Iterator<Item = FaceOrphan<'_, <B as Parametric>::Data>>
Gets an iterator of orphan views over adjacent faces.
sourceimpl<'a, M> FaceView<&'a mut M> where
M: AsStorage<Arc<<M as Parametric>::Data>> + AsStorage<Face<<M as Parametric>::Data>> + AsStorageMut<Vertex<<M as Parametric>::Data>> + Consistent + Parametric,
impl<'a, M> FaceView<&'a mut M> where
M: AsStorage<Arc<<M as Parametric>::Data>> + AsStorage<Face<<M as Parametric>::Data>> + AsStorageMut<Vertex<<M as Parametric>::Data>> + Consistent + Parametric,
pub fn into_adjacent_vertex_orphans(
self
) -> impl Iterator<Item = VertexOrphan<'a, <M as Parametric>::Data>>
sourceimpl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorage<Face<<B as Parametric>::Data>> + AsStorageMut<Vertex<<B as Parametric>::Data>> + Consistent + Parametric,
impl<B> FaceView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorage<Face<<B as Parametric>::Data>> + AsStorageMut<Vertex<<B as Parametric>::Data>> + Consistent + Parametric,
sourcepub fn adjacent_vertex_orphans(
&mut self
) -> impl Iterator<Item = VertexOrphan<'_, <B as Parametric>::Data>>
pub fn adjacent_vertex_orphans(
&mut self
) -> impl Iterator<Item = VertexOrphan<'_, <B as Parametric>::Data>>
Gets an iterator of orphan views over the vertices that form the face.
sourceimpl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, G> FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn traverse_by_breadth(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
pub fn traverse_by_breadth(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
Gets an iterator that traverses adjacent faces by breadth.
The traversal moves from the face to its adjacent faces and so on. If there are disjoint sub-graphs in the graph, then a traversal will not reach every face in the graph.
sourcepub fn traverse_by_depth(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
pub fn traverse_by_depth(
&self
) -> impl Clone + Iterator<Item = FaceView<&B::Target>>
Gets an iterator that traverses adjacent faces by depth.
The traversal moves from the face to its adjacent faces and so on. If there are disjoint sub-graphs in the graph, then a traversal will not reach every face in the graph.
sourceimpl<'a, M, G> FaceView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Default + Mutable<Data = G>,
G: GraphData,
impl<'a, M, G> FaceView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + AsStorage<Face<G>> + AsStorage<Vertex<G>> + Default + Mutable<Data = G>,
G: GraphData,
sourcepub fn split(
self,
source: impl Into<Selector<VertexKey>>,
destination: impl Into<Selector<VertexKey>>
) -> Result<ArcView<&'a mut M>, GraphError>
pub fn split(
self,
source: impl Into<Selector<VertexKey>>,
destination: impl Into<Selector<VertexKey>>
) -> Result<ArcView<&'a mut M>, GraphError>
Splits the face by bisecting it with a composite edge inserted between two non-adjacent vertices within the face’s perimeter.
The vertices can be chosen by key or index, where index selects the $n^\text{th}$ vertex within the face’s ring.
Returns the arc inserted from the source vertex to the destination vertex. If a face $\overrightarrow{\{A,B, C,D\}}$ is split from $A$ to $C$, then it will be decomposed into faces in the rings $\overrightarrow{\{A,B,C\}}$ and $\overrightarrow{\{C,D,A\}}$ and the arc $\overrightarrow{AC}$ will be returned.
Errors
Returns an error if either of the given vertices cannot be found, are not within the face’s perimeter, or the distance between the vertices along the ring is less than two.
Examples
Splitting a quadrilateral face:
use nalgebra::Point2;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::Tetragon;
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers(
vec![Tetragon::new(0usize, 1, 2, 3)],
vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)],
)
.unwrap();
let key = graph.faces().nth(0).unwrap().key();
let arc = graph
.face_mut(key)
.unwrap()
.split(ByIndex(0), ByIndex(2))
.unwrap()
.into_ref();
sourcepub fn merge(
self,
destination: impl Into<Selector<FaceKey>>
) -> Result<Self, GraphError>
pub fn merge(
self,
destination: impl Into<Selector<FaceKey>>
) -> Result<Self, GraphError>
Merges the face into an adjacent face over a shared edge.
The adjacent face can be chosen by key or index, where index selects the $n^\text{th}$ adjacent face.
Returns the merged face.
Errors
Returns an error if the destination face cannot be found or is not adjacent to the initiating face.
Examples
Merging two adjacent quadrilateral faces:
use nalgebra::Point2;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::Tetragon;
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers(
vec![Tetragon::new(0usize, 1, 2, 3), Tetragon::new(0, 3, 4, 5)],
vec![
(0.0, 0.0), // 0
(1.0, 0.0), // 1
(1.0, 1.0), // 2
(0.0, 1.0), // 3
(-1.0, 1.0), // 4
(-1.0, 0.0), // 5
],
)
.unwrap();
let key = graph.faces().nth(0).unwrap().key();
let face = graph
.face_mut(key)
.unwrap()
.merge(ByIndex(0))
.unwrap()
.into_ref();
sourcepub fn bridge(self, destination: FaceKey) -> Result<(), GraphError>
pub fn bridge(self, destination: FaceKey) -> Result<(), GraphError>
Connects faces with equal arity with faces inserted along their perimeters.
The inserted faces are always quadrilateral. Both the initiating face and destination face are removed.
Errors
Returns an error if the destination face cannot be found or the arity of the face and its destination are not the same.
sourcepub fn triangulate(self) -> Self
pub fn triangulate(self) -> Self
Decomposes the face into triangles. Does nothing if the face is triangular.
Returns the terminating face of the decomposition.
sourcepub fn poke_with<F>(self, f: F) -> VertexView<&'a mut M> where
F: FnOnce() -> G::Vertex,
pub fn poke_with<F>(self, f: F) -> VertexView<&'a mut M> where
F: FnOnce() -> G::Vertex,
Subdivides the face about a vertex. A triangle fan is formed from each arc in the face’s perimeter and the vertex.
Poking inserts a new vertex with data provided by the given function.
Returns the inserted vertex.
Examples
Forming a pyramid from a triangular face:
use nalgebra::Point3;
use plexus::geometry::{AsPosition, AsPositionMut};
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::Trigon;
let mut graph = MeshGraph::<Point3<f64>>::from_raw_buffers(
vec![Trigon::new(0usize, 1, 2)],
vec![(-1.0, 0.0, 0.0), (1.0, 0.0, 0.0), (0.0, 2.0, 0.0)],
)
.unwrap();
let key = graph.faces().nth(0).unwrap().key();
let mut face = graph.face_mut(key).unwrap();
// See also `poke_with_offset`, which provides this functionality.
let position = face.centroid() + face.normal().unwrap();
face.poke_with(move || position);
sourcepub fn poke_at_centroid(self) -> VertexView<&'a mut M> where
G: FaceCentroid,
G::Vertex: AsPositionMut,
pub fn poke_at_centroid(self) -> VertexView<&'a mut M> where
G: FaceCentroid,
G::Vertex: AsPositionMut,
Subdivides the face about its centroid. A triangle fan is formed from each arc in the face’s perimeter and a vertex inserted at the centroid.
Returns the inserted vertex.
sourcepub fn poke_with_offset<T>(
self,
offset: T
) -> Result<VertexView<&'a mut M>, GraphError> where
T: Into<Scalar<VertexPosition<G>>>,
G: FaceCentroid + FaceNormal,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
pub fn poke_with_offset<T>(
self,
offset: T
) -> Result<VertexView<&'a mut M>, GraphError> where
T: Into<Scalar<VertexPosition<G>>>,
G: FaceCentroid + FaceNormal,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
Subdivides the face about its centroid. A triangle fan is formed from each arc in the face’s perimeter and a vertex inserted at the centroid. The inserted vertex is then translated along the initiating face’s normal by the given offset.
Returns the inserted vertex.
Errors
Returns an error if the geometry could not be computed.
Examples
Constructing a “spikey” sphere:
use decorum::R64;
use nalgebra::Point3;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::generate::Position;
use plexus::primitive::sphere::UvSphere;
type E3 = Point3<R64>;
let mut graph: MeshGraph<E3> = UvSphere::new(16, 8).polygons::<Position<E3>>().collect();
let keys = graph.faces().map(|face| face.key()).collect::<Vec<_>>();
for key in keys {
graph.face_mut(key).unwrap().poke_with_offset(0.5).unwrap();
}
sourcepub fn extrude_with_offset<T>(self, offset: T) -> Result<Self, GraphError> where
T: Into<Scalar<VertexPosition<G>>>,
G: FaceNormal,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
pub fn extrude_with_offset<T>(self, offset: T) -> Result<Self, GraphError> where
T: Into<Scalar<VertexPosition<G>>>,
G: FaceNormal,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
Extrudes the face along its normal.
Returns the extruded face.
Errors
Returns an error if the geometry could not be computed.
sourcepub fn extrude_with_translation(
self,
translation: Vector<VertexPosition<G>>
) -> Self where
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
pub fn extrude_with_translation(
self,
translation: Vector<VertexPosition<G>>
) -> Self where
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
Extrudes the face along a translation.
Returns the extruded face.
sourcepub fn extrude_with<F>(self, f: F) -> Self where
F: Fn(&G::Vertex) -> G::Vertex,
pub fn extrude_with<F>(self, f: F) -> Self where
F: Fn(&G::Vertex) -> G::Vertex,
Extrudes a face using the given vertex data.
Returns the extruded face.
Trait Implementations
sourceimpl<B> Borrow<FaceKey> for FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Face<<B as Parametric>::Data>> + Parametric,
impl<B> Borrow<FaceKey> for FaceView<B> where
B: Reborrow,
B::Target: AsStorage<Face<<B as Parametric>::Data>> + Parametric,
sourceimpl<B, M, G> Clone for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Face<G>>: Clone,
impl<B, M, G> Clone for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Face<G>>: Clone,
sourceimpl<B, M, G> ClosedView for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ClosedView for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> Deref for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Deref for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> DerefMut for FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> DerefMut for FaceView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> DynamicArity for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> DynamicArity for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<'a, M, G> From<FaceView<&'a mut M>> for FaceOrphan<'a, G> where
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> From<FaceView<&'a mut M>> for FaceOrphan<'a, G> where
M: AsStorageMut<Face<G>> + Parametric<Data = G>,
G: 'a + GraphData,
sourceimpl<B, M, G> Hash for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Hash for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> PartialEq<FaceView<B>> for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> PartialEq<FaceView<B>> for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> StaticArity for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> StaticArity for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> ToRing<B> for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ToRing<B> for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Copy for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Face<G>>: Copy,
impl<B, M, G> Eq for FaceView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
Auto Trait Implementations
impl<B> RefUnwindSafe for FaceView<B> where
B: RefUnwindSafe,
impl<B> Send for FaceView<B> where
B: Send,
impl<B> Sync for FaceView<B> where
B: Sync,
impl<B> Unpin for FaceView<B> where
B: Unpin,
impl<B> UnwindSafe for FaceView<B> where
B: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FromGeometry<T> for T
impl<T> FromGeometry<T> for T
fn from_geometry(other: T) -> T
sourceimpl<T, U> IntoGeometry<U> for T where
U: FromGeometry<T>,
impl<T, U> IntoGeometry<U> for T where
U: FromGeometry<T>,
fn into_geometry(self) -> U
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.