How do I use a crate from another crate without explicitly defining a new dependency in my project?

Viewed 2084

I want to use the dijkstra function from the pathfinding crate:

pub fn dijkstra<N, C, FN, IN, FS>(
    start: &N, 
    neighbours: FN, 
    success: FS
) -> Option<(Vec<N>, C)> 
where
    N: Eq + Hash + Clone,
    C: Zero + Ord + Copy,
    FN: Fn(&N) -> IN,
    IN: IntoIterator<Item = (N, C)>,
    FS: Fn(&N) -> bool, 

To use it I need to implement the Zero trait from the num_traits crate. But how can I import Zero? An obvious way is to add extern crate num_traits; into my crate and fix my Cargo.toml appropriately. But in doing so, I have to watch a dependency of a dependency, which is not good.

Can I somehow implement Zero without explicit dependency on the num_traits crate, like below?

use pathfinding::num_traits::Zero; 
1 Answers
Related