Expand description

An example using clients and files.

use safe_index::examples::clients::{*, idx::{FileSet, ClientSet}};

let mut data = Data::new();

let c_1 = data.add_client("client 1");
let c_2 = data.add_client("client 2");
let c_3 = data.add_client("client 3");
let c_4 = data.add_client("client 4");

let c_1_too = data.clients.index_from_usize(0);
assert_eq!(Some(c_1), c_1_too);
let c_2_too = data.clients.index_from_usize(1);
assert_eq!(Some(c_2), c_2_too);
let c_3_too = data.clients.index_from_usize(2);
assert_eq!(Some(c_3), c_3_too);
let c_4_too = data.clients.index_from_usize(3);
assert_eq!(Some(c_4), c_4_too);
let none_because_only_four_clients = data.clients.index_from_usize(4);
assert_eq!(None, none_because_only_four_clients);

let f_1 = data.add_file(FileInfo::new("file 1", vec![c_1, c_2]));
let f_2 = data.add_file(FileInfo::new("file 2", vec![c_3]));
let f_3 = data.add_file(FileInfo::new("file 3", vec![c_2]));
let f_4 = data.add_file(FileInfo::new("file 4", vec![c_4]));

let classes = data.client_clusters();
let expected: Vec<(ClientSet, FileSet)> = vec![
    (
        vec![c_1, c_2].into_iter().collect(),
        vec![f_1, f_3].into_iter().collect()
    ),
    (
        vec![c_3].into_iter().collect(),
        vec![f_2].into_iter().collect()
    ),
    (
        vec![c_4].into_iter().collect(),
        vec![f_4].into_iter().collect()
    ),
];
assert_eq! { classes, expected }

data.add_client_to_file(c_3, f_3);

let classes = data.client_clusters();
let expected: Vec<(ClientSet, FileSet)> = vec![
    (
        vec![c_1, c_2, c_3].into_iter().collect(),
        vec![f_1, f_2, f_3].into_iter().collect()
    ),
    (
        vec![c_4].into_iter().collect(),
        vec![f_4].into_iter().collect()
    ),
];
assert_eq! { classes, expected }

Modules

Indices.

Structs

Client information.
Aggregates client and file info.
File information.