#resolution #dep #dependencies

dep-res

简单的依赖解析

1个不稳定版本

0.1.0 2023年5月19日

#1566算法

MIT许可证

11KB
241

dep-res

Rust version documentation LICENSE

简单的依赖解析

示例

#[derive(Debug)]
struct SimpleDep {
    pub id: usize,
    pub deps: Vec<usize>,
}

impl DepMeta for SimpleDep {
    type Id = usize;

    fn get_id(&self) -> Self::Id {
        self.id
    }

    fn get_deps(&self) -> &[Self::Id] {
        &*self.deps
    }
}

let items = vec![
    SimpleDep {
        id: 0,
        deps: vec![],
    },
    SimpleDep {
        id: 1,
        deps: vec![0],
    },
    SimpleDep {
        id: 2,
        deps: vec![],
    },
    SimpleDep {
        id: 3,
        deps: vec![],
    },
    SimpleDep {
        id: 4,
        deps: vec![3],
    },
    SimpleDep {
        id: 5,
        deps: vec![4],
    },
];

let mut dr = DepRes::new();
dr.add(&items);
let r = dr.resolve().unwrap();

let items = r.sorted_by_level();
println!("{:?}", items);
// [0, 2, 3, 1, 4, 5]

let levels = r.iter_level().collect::<Vec<_>>();
println!("{:?}", levels);
// // example, actually unordered
//
// [ 
//    DepLevel { level: 0, deps: {0: (), 2: (), 3: ()} },
//    DepLevel { level: 1, deps: {1: (), 4: ()} }, 
//    DepLevel { level: 2, deps: {5: ()} }, 
// ]

依赖

~8–14MB
~136K SLoC