pub struct ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + Parametric, { /* private fields */ }
Expand description
View of an arc entity.
An arc from a vertex $A$ to a vertex $B$ is notated $\overrightarrow{AB}$. This is shorthand for the path notation $\overrightarrow{(A,B)}$.
Arcs provide the connectivity information within a MeshGraph
and are the
primary mechanism for traversing its topology. Moreover, most edge-like
operations are exposed by arcs.
See the graph
module documentation for more information about views.
Examples
Traversing a MeshGraph
of a cube via its arcs to find an opposing face:
use decorum::R64;
use nalgebra::Point3;
use plexus::graph::MeshGraph;
use plexus::index::HashIndexer;
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_with_indexer(HashIndexer::default())
.unwrap();
let face = graph.faces().nth(0).unwrap();
let opposite = face
.into_arc()
.into_opposite_arc()
.into_next_arc()
.into_next_arc()
.into_opposite_arc()
.into_face()
.unwrap();
Implementations
sourceimpl<B, M> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<<B as Parametric>::Data>> + Parametric,
impl<B, M> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<<B as Parametric>::Data>> + Parametric,
sourceimpl<'a, B, M, G> ArcView<B> where
B: ReborrowInto<'a, Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<'a, B, M, G> ArcView<B> where
B: ReborrowInto<'a, Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourcepub fn into_ref(self) -> ArcView<&'a M>
pub fn into_ref(self) -> ArcView<&'a M>
Examples
use nalgebra::Point2;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers_with_arity(
vec![0u32, 1, 2, 3],
vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)],
4,
)
.unwrap();
let key = graph
.arcs()
.find(|arc| arc.is_boundary_arc())
.unwrap()
.key();
let arc = graph
.arc_mut(key)
.unwrap()
.extrude_with_offset(1.0)
.unwrap()
.into_ref();
// This would not be possible without conversion into an immutable view.
let _ = arc.into_next_arc().into_next_arc().into_face();
let _ = arc.into_opposite_arc().into_face();
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> ArcView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
Reachable API.
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn into_boundary_arc(self) -> Option<Self>
pub fn into_boundary_arc(self) -> Option<Self>
Returns the arc if it is a boundary arc, otherwise None
.
sourcepub fn into_opposite_arc(self) -> Self
pub fn into_opposite_arc(self) -> Self
Converts the arc into its opposite arc.
sourcepub fn into_next_arc(self) -> Self
pub fn into_next_arc(self) -> Self
Converts the arc into its next arc.
sourcepub fn into_previous_arc(self) -> Self
pub fn into_previous_arc(self) -> Self
Converts the arc into its previous arc.
sourcepub fn boundary_arc(&self) -> Option<ArcView<&M>>
pub fn boundary_arc(&self) -> Option<ArcView<&M>>
Returns the same arc if it is a boundary arc, otherwise None
.
sourcepub fn opposite_arc(&self) -> ArcView<&M>
pub fn opposite_arc(&self) -> ArcView<&M>
Gets the opposite arc.
sourcepub fn previous_arc(&self) -> ArcView<&M>
pub fn previous_arc(&self) -> ArcView<&M>
Gets the previous arc.
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Parametric<Data = G>,
G: GraphData,
Reachable API.
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn into_path(self) -> Path<'static, B>
pub fn path(&self) -> Path<'_, &M>
sourcepub fn into_source_vertex(self) -> VertexView<B>
pub fn into_source_vertex(self) -> VertexView<B>
Converts the arc into its source vertex.
sourcepub fn into_destination_vertex(self) -> VertexView<B>
pub fn into_destination_vertex(self) -> VertexView<B>
Converts the arc into its destination vertex.
sourcepub fn source_vertex(&self) -> VertexView<&M>
pub fn source_vertex(&self) -> VertexView<&M>
Gets the source vertex of the arc.
sourcepub fn destination_vertex(&self) -> VertexView<&M>
pub fn destination_vertex(&self) -> VertexView<&M>
Gets the destination vertex of the arc.
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + Parametric<Data = G>,
G: GraphData,
Reachable API.
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Parametric<Data = G>,
G: GraphData,
Reachable API.
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn normal(&self) -> Vector<VertexPosition<G>> where
G: ArcNormal,
G::Vertex: AsPosition,
sourceimpl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn midpoint(&self) -> VertexPosition<G> where
G: EdgeMidpoint,
G::Vertex: AsPosition,
sourceimpl<'a, B, M, G> ArcView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<'a, B, M, G> ArcView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn into_adjacent_vertices(
self
) -> impl Clone + ExactSizeIterator<Item = VertexView<&'a M>>
sourceimpl<B, G> ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, G> ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Vertex<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn adjacent_vertices(
&self
) -> impl Clone + ExactSizeIterator<Item = VertexView<&B::Target>>
pub fn adjacent_vertices(
&self
) -> impl Clone + ExactSizeIterator<Item = VertexView<&B::Target>>
Gets an iterator of views over the vertices connected by the arc.
sourceimpl<'a, B, M, G> ArcView<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> ArcView<B> where
B: ReborrowInto<'a, Target = M>,
M: 'a + AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
pub fn into_adjacent_faces(
self
) -> impl Clone + ExactSizeIterator<Item = FaceView<&'a M>>
sourceimpl<B, G> ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, G> ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<G>> + AsStorage<Face<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourcepub fn adjacent_faces(
&self
) -> impl Clone + ExactSizeIterator<Item = FaceView<&B::Target>>
pub fn adjacent_faces(
&self
) -> impl Clone + ExactSizeIterator<Item = FaceView<&B::Target>>
Gets an iterator of views over the faces connected to the arc.
sourceimpl<'a, M, G> ArcView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorageMut<Vertex<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> ArcView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorageMut<Vertex<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
pub fn into_adjacent_vertex_orphans(
self
) -> impl ExactSizeIterator<Item = VertexOrphan<'a, G>>
sourceimpl<B> ArcView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorageMut<Vertex<<B as Parametric>::Data>> + Consistent + Parametric,
impl<B> ArcView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorageMut<Vertex<<B as Parametric>::Data>> + Consistent + Parametric,
sourcepub fn adjacent_vertex_orphans(
&mut self
) -> impl ExactSizeIterator<Item = VertexOrphan<'_, <B as Parametric>::Data>>
pub fn adjacent_vertex_orphans(
&mut self
) -> impl ExactSizeIterator<Item = VertexOrphan<'_, <B as Parametric>::Data>>
Gets an iterator of orphan views over the vertices connected by the arc.
sourceimpl<'a, M, G> ArcView<&'a mut M> where
M: AsStorage<Arc<G>> + AsStorageMut<Face<G>> + Consistent + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> ArcView<&'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 ExactSizeIterator<Item = FaceOrphan<'a, G>>
sourceimpl<B> ArcView<B> where
B: ReborrowMut,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + AsStorageMut<Face<<B as Parametric>::Data>> + Consistent + Parametric,
impl<B> ArcView<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 ExactSizeIterator<Item = FaceOrphan<'_, <B as Parametric>::Data>>
pub fn adjacent_face_orphans(
&mut self
) -> impl ExactSizeIterator<Item = FaceOrphan<'_, <B as Parametric>::Data>>
Gets an iterator of orphan views over the faces connected to the arc.
sourceimpl<'a, M, G> ArcView<&'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> ArcView<&'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_with<F>(self, f: F) -> VertexView<&'a mut M> where
F: FnOnce() -> G::Vertex,
pub fn split_with<F>(self, f: F) -> VertexView<&'a mut M> where
F: FnOnce() -> G::Vertex,
Splits the composite edge of the arc into two adjacent edges that share a vertex.
Splitting inserts a new vertex with data provided by the given function. Splitting an arc $\overrightarrow{AB}$ returns a vertex $M$ that subdivides the composite edge. The leading arc of $M$ is $\overrightarrow{MB}$ and is a part of the same ring as the initiating arc.
Returns the inserted vertex.
Examples
Splitting an edge in a MeshGraph
with weighted vertices:
use plexus::graph::{GraphData, MeshGraph};
use plexus::prelude::*;
use plexus::primitive::NGon;
pub enum Weight {}
impl GraphData for Weight {
type Vertex = f64;
type Arc = ();
type Edge = ();
type Face = ();
}
let mut graph =
MeshGraph::<Weight>::from_raw_buffers(vec![NGon([0usize, 1, 2])], vec![1.0, 2.0, 0.5])
.unwrap();
let key = graph.arcs().nth(0).unwrap().key();
let vertex = graph.arc_mut(key).unwrap().split_with(|| 0.1);
sourcepub fn split_at_midpoint(self) -> VertexView<&'a mut M> where
G: EdgeMidpoint,
G::Vertex: AsPositionMut + Clone,
pub fn split_at_midpoint(self) -> VertexView<&'a mut M> where
G: EdgeMidpoint,
G::Vertex: AsPositionMut + Clone,
Splits the composite edge of the arc at its midpoint.
Splitting inserts a new vertex with the data of the arc’s source vertex but modified such that the position of the vertex is the computed midpoint of both of the arc’s vertices.
Splitting inserts a new vertex with data provided by the given function. Splitting an arc $\overrightarrow{AB}$ returns a vertex $M$ that subdivides the composite edge. The leading arc of $M$ is $\overrightarrow{MB}$ and is a part of the same ring as the initiating arc.
This function is only available if a MeshGraph
exposes positional
data in its vertices and that data supports interpolation. See the
EdgeMidpoint
trait.
Returns the inserted vertex.
Examples
Splitting an edge in a triangle at its midpoint:
use nalgebra::Point2;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
use plexus::primitive::Trigon;
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers(
vec![Trigon::new(0usize, 1, 2)],
vec![(0.0, 0.0), (1.0, 0.0), (0.0, 1.0)],
)
.unwrap();
let key = graph.arcs().nth(0).unwrap().key();
let vertex = graph.arc_mut(key).unwrap().split_at_midpoint();
sourcepub fn bridge(
self,
destination: impl Into<Selector<ArcKey>>
) -> Result<FaceView<&'a mut M>, GraphError>
pub fn bridge(
self,
destination: impl Into<Selector<ArcKey>>
) -> Result<FaceView<&'a mut M>, GraphError>
Connects the arc to another arc by inserting a face.
Bridging arcs inserts a new face and, as needed, new arcs and edges. The inserted face is always a quadrilateral. The bridged arcs must be boundary arcs with an orientation that allows them to form a ring.
Bridging two compatible arcs $\overrightarrow{AB}$ and $\overrightarrow{CD}$ will result in a ring $\overrightarrow{\{A,B, C,D\}}$.
Arcs can be bridged within a ring. The destination arc can be chosen by key or index, where an index selects the $n^\text{th}$ arc from the source arc within the ring.
Returns the inserted face.
Errors
Returns an error if the destination arc cannot be found, either arc is not a boundary arc, or the orientation of the destination arc is incompatible with the initiating arc.
Examples
Bridging two disjoint quadrilaterals together:
use nalgebra::Point2;
use plexus::geometry::FromGeometry;
use plexus::graph::{ArcKey, GraphData, MeshGraph, VertexKey, VertexView};
use plexus::prelude::*;
use plexus::primitive::NGon;
fn find<'a, I, T, G>(input: I, data: T) -> Option<VertexKey>
where
I: IntoIterator<Item = VertexView<&'a MeshGraph<G>>>,
G: 'a + GraphData,
G::Vertex: FromGeometry<T> + PartialEq,
{
let data = data.into_geometry();
input
.into_iter()
.find(|vertex| *vertex.get() == data)
.map(|vertex| vertex.key())
}
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers(
vec![NGon([0usize, 1, 2, 3]), NGon([4, 5, 6, 7])],
vec![
(-2.0, 0.0),
(-1.0, 0.0), // b
(-1.0, 1.0), // a
(-2.0, 1.0),
(1.0, 0.0), // c
(2.0, 0.0),
(2.0, 1.0),
(1.0, 1.0), // d
],
)
.unwrap();
let a = find(graph.vertices(), (-1.0, 1.0)).unwrap();
let b = find(graph.vertices(), (-1.0, 0.0)).unwrap();
let c = find(graph.vertices(), (1.0, 0.0)).unwrap();
let d = find(graph.vertices(), (1.0, 1.0)).unwrap();
let face = graph
.arc_mut(ArcKey::from((a, b)))
.unwrap()
.bridge(ArcKey::from((c, d)))
.unwrap();
sourcepub fn extrude_with_offset<T>(self, offset: T) -> Result<Self, GraphError> where
T: Into<Scalar<VertexPosition<G>>>,
G: ArcNormal,
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: ArcNormal,
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
Extrudes the arc along its normal.
The positions of each extruded vertex are translated along the arc’s normal by the given offset.
An arc’s normal is perpendicular to the arc and also coplanar with the arc and one of its adjacent arcs. This is computed via a projection and supports both 2D and 3D geometries.
Returns the extruded arc, which is in the same ring as the initiating arc.
Errors
Returns an error if the arc is not a boundary arc.
Examples
Extrude an exterior arc of a quadrilateral.
use nalgebra::Point2;
use plexus::graph::MeshGraph;
use plexus::prelude::*;
let mut graph = MeshGraph::<Point2<f64>>::from_raw_buffers_with_arity(
vec![0usize, 1, 2, 3],
vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)],
4,
)
.unwrap();
let key = graph
.arcs()
.find(|arc| arc.is_boundary_arc())
.map(|arc| arc.key())
.unwrap();
graph
.arc_mut(key)
.unwrap()
.extrude_with_offset(1.0)
.unwrap();
sourcepub fn extrude_with_translation(
self,
translation: Vector<VertexPosition<G>>
) -> Result<Self, GraphError> where
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
pub fn extrude_with_translation(
self,
translation: Vector<VertexPosition<G>>
) -> Result<Self, GraphError> where
G::Vertex: AsPositionMut,
VertexPosition<G>: EuclideanSpace,
Extrudes the arc along a translation.
The positions of each extruded vertex are translated by the given vector.
Returns the extruded arc, which is in the same ring as the initiating arc.
Errors
Returns an error if the arc is not a boundary arc.
sourcepub fn extrude_with<F>(self, f: F) -> Result<Self, GraphError> where
F: Fn(G::Vertex) -> G::Vertex,
pub fn extrude_with<F>(self, f: F) -> Result<Self, GraphError> where
F: Fn(G::Vertex) -> G::Vertex,
Extrudes the arc using the given vertex data.
The data of each extruded vertex is determined by the given function, which maps the data of each source vertex into the data of the corresponding destination vertex.
Returns the extruded arc, which is in the same ring as the initiating arc.
Errors
Returns an error if the arc is not a boundary arc.
sourcepub fn remove(self) -> Option<VertexView<&'a mut M>>
pub fn remove(self) -> Option<VertexView<&'a mut M>>
Removes the arc and its composite edge.
Any and all dependent entities are also removed, such as connected faces, disjoint vertices, etc.
Returns the source vertex of the initiating arc or None
if that vertex
becomes disjoint and is also removed. If an arc $\overrightarrow{AB}$ is
removed and its source vertex is not disjoint, then $A$ is returned.
Trait Implementations
sourceimpl<B> Borrow<ArcKey> for ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + Parametric,
impl<B> Borrow<ArcKey> for ArcView<B> where
B: Reborrow,
B::Target: AsStorage<Arc<<B as Parametric>::Data>> + Parametric,
sourceimpl<B, M, G> Clone for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Arc<G>>: Clone,
impl<B, M, G> Clone for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Arc<G>>: Clone,
sourceimpl<B, M, G> ClosedView for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ClosedView for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> Deref for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Deref for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> DerefMut for ArcView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> DerefMut for ArcView<B> where
B: ReborrowMut<Target = M>,
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<'a, M, G> From<ArcView<&'a mut M>> for ArcOrphan<'a, G> where
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: 'a + GraphData,
impl<'a, M, G> From<ArcView<&'a mut M>> for ArcOrphan<'a, G> where
M: AsStorageMut<Arc<G>> + Parametric<Data = G>,
G: 'a + GraphData,
sourceimpl<B, M, G> From<ArcView<B>> for Ring<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> From<ArcView<B>> for Ring<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> From<Ring<B>> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> From<Ring<B>> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> Hash for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Hash for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> PartialEq<ArcView<B>> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> PartialEq<ArcView<B>> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
sourceimpl<B, M, G> ToArc<B> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> ToArc<B> for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + AsStorage<Edge<G>> + Consistent + Parametric<Data = G>,
G: GraphData,
impl<B, M, G> Copy for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
View<B, Arc<G>>: Copy,
impl<B, M, G> Eq for ArcView<B> where
B: Reborrow<Target = M>,
M: AsStorage<Arc<G>> + Parametric<Data = G>,
G: GraphData,
Auto Trait Implementations
impl<B> RefUnwindSafe for ArcView<B> where
B: RefUnwindSafe,
impl<B> Send for ArcView<B> where
B: Send,
impl<B> Sync for ArcView<B> where
B: Sync,
impl<B> Unpin for ArcView<B> where
B: Unpin,
impl<B> UnwindSafe for ArcView<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.