Enum libreda_pnr::place::stdcell_placer::db::EdgeIntersection
pub enum EdgeIntersection<IntersectionCoord, OriginalCoord, Edge> {
None,
Point(Point<IntersectionCoord>),
EndPoint(Point<OriginalCoord>),
Overlap(Edge),
}
Expand description
Return type for the edge-edge intersection functions. Stores all possible results of an edge to edge intersection.
Note on coordinate types:
There are two coordinate types (which may be the same concrete type):
OriginalCoord
is the coordinate type used to define the edge end-points. An intersection at the end-points can be expressed with this coordinate type.IntersectionCoord
is the coordinate type used to express intersection points somewhere in the middle of the edge. This may differ from the coordinate type of the end-points. For example if the end-points are stored in integer coordinates the intersection may require rational coordinates. But in special cases such as axis-aligned edges, the intersection point can indeed be expressed in integer coordinates.
Variants§
None
No intersection.
Point(Point<IntersectionCoord>)
Intersection in a single point but not on an endpoint of an edge.
EndPoint(Point<OriginalCoord>)
Intersection in an endpoint of an edge.
Overlap(Edge)
Full or partial overlap.
Trait Implementations§
§impl<IntersectionCoord, OriginalCoord, Edge> Clone for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where
IntersectionCoord: Clone,
OriginalCoord: Clone,
Edge: Clone,
impl<IntersectionCoord, OriginalCoord, Edge> Clone for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where IntersectionCoord: Clone, OriginalCoord: Clone, Edge: Clone,
§fn clone(&self) -> EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>
fn clone(&self) -> EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more§impl<IntersectionCoord, OriginalCoord, Edge> Debug for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where
IntersectionCoord: Debug,
OriginalCoord: Debug,
Edge: Debug,
impl<IntersectionCoord, OriginalCoord, Edge> Debug for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where IntersectionCoord: Debug, OriginalCoord: Debug, Edge: Debug,
§impl<IntersectionCoord, OriginalCoord, Edge> PartialEq<EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>> for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where
IntersectionCoord: PartialEq<IntersectionCoord>,
OriginalCoord: PartialEq<OriginalCoord>,
Edge: PartialEq<Edge>,
impl<IntersectionCoord, OriginalCoord, Edge> PartialEq<EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>> for EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>where IntersectionCoord: PartialEq<IntersectionCoord>, OriginalCoord: PartialEq<OriginalCoord>, Edge: PartialEq<Edge>,
§fn eq(
&self,
other: &EdgeIntersection<IntersectionCoord, OriginalCoord, Edge>
) -> bool
fn eq( &self, other: &EdgeIntersection<IntersectionCoord, OriginalCoord, Edge> ) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.