pub struct DFS;Expand description
Depth-First Search for deep graph exploration
Use for finding paths, detecting cycles, topological sorting. Time: O(V + E), Space: O(V)
Implementations§
Source§impl DFS
impl DFS
Sourcepub fn find_path(
graph: &GraphStore,
source: &str,
target: &str,
) -> ShortestPathResult
pub fn find_path( graph: &GraphStore, source: &str, target: &str, ) -> ShortestPathResult
Find any path from source to target (not necessarily shortest)
Sourcepub fn traverse(graph: &GraphStore, source: &str) -> Vec<String>
pub fn traverse(graph: &GraphStore, source: &str) -> Vec<String>
DFS traversal returning all nodes in DFS order
Sourcepub fn all_paths(
graph: &GraphStore,
source: &str,
target: &str,
max_depth: usize,
) -> AllPathsResult
pub fn all_paths( graph: &GraphStore, source: &str, target: &str, max_depth: usize, ) -> AllPathsResult
Find all paths from source to target (with depth limit)
Sourcepub fn topological_sort(graph: &GraphStore) -> Option<Vec<String>>
pub fn topological_sort(graph: &GraphStore) -> Option<Vec<String>>
Topological sort (returns None if graph has cycles)
Auto Trait Implementations§
impl Freeze for DFS
impl RefUnwindSafe for DFS
impl Send for DFS
impl Sync for DFS
impl Unpin for DFS
impl UnsafeUnpin for DFS
impl UnwindSafe for DFS
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request