pub enum DistanceDirection {
Forward,
Backward,
Symmetric,
}Expand description
Determines how the distance propagates through the rule RHS.
Variants§
Forward
The distance propagates forward.
§Example
ⓘ
A ::= B C DThe distance to C is:
ⓘ
A ::= 1 B 0 C null D nullWe find it like so:
use cfg_grammar::Cfg;
use cfg_predict_distance::{MinimalDistance, DistanceDirection};
let mut cfg = Cfg::new();
let [a, b, c, d] = cfg.sym();
cfg.set_roots([a]);
cfg.rule(a).rhs([b, c, d]);
let mut distance = MinimalDistance::new(&cfg);
let result = distance.minimal_distances(&[(0, 1)], DistanceDirection::Forward);
let expected = vec![Some(1), Some(0), None, None];
assert_eq!(result, &[expected]);Backward
The distance propagates only backwards.
Symmetric
The distance propagates both ways thorughout the RHS.
Trait Implementations§
Source§impl Clone for DistanceDirection
impl Clone for DistanceDirection
Source§fn clone(&self) -> DistanceDirection
fn clone(&self) -> DistanceDirection
Returns a duplicate 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 moreimpl Copy for DistanceDirection
Auto Trait Implementations§
impl Freeze for DistanceDirection
impl RefUnwindSafe for DistanceDirection
impl Send for DistanceDirection
impl Sync for DistanceDirection
impl Unpin for DistanceDirection
impl UnwindSafe for DistanceDirection
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
Mutably borrows from an owned value. Read more