dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn enumerate_subsets(s: usize) -> Vec<usize> {
    let mut subsets = vec![];

    let mut t = s;

    loop {
        subsets.push(t);

        if t == 0 {
            subsets.reverse();

            return subsets;
        }

        t = (t - 1) & s;
    }
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let cases = vec![(0b101, vec![0b000, 0b001, 0b100, 0b101])];

        for (s, ans) in cases {
            assert_eq!(enumerate_subsets(s), ans);
        }
    }
}