sort and dedupe IDs
This commit is contained in:
parent
0626d8d069
commit
62f488c24e
14
src/lib.rs
14
src/lib.rs
|
@ -147,7 +147,10 @@ fn segments_from_string(string: String) -> Vec<String> {
|
|||
|
||||
/// e.g. pass all tile IDs into this to get a new non-conflicting tile ID
|
||||
#[inline]
|
||||
fn new_unique_id(ids: Vec<String>) -> String {
|
||||
fn new_unique_id(mut ids: Vec<String>) -> String {
|
||||
ids.sort();
|
||||
ids.dedup();
|
||||
|
||||
let mut new_id: u64 = 0;
|
||||
|
||||
for id in ids {
|
||||
|
@ -237,8 +240,13 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn test_new_unique_id() {
|
||||
assert_eq!(new_unique_id(vec!["0".to_string(), "2".to_string()]), "1".to_string());
|
||||
assert_eq!(new_unique_id(vec!["0".to_string(), "1".to_string()]), "2".to_string());
|
||||
// start
|
||||
assert_eq!(new_unique_id(vec!["1".to_string(), "z".to_string()]), "0".to_string());
|
||||
// middle
|
||||
assert_eq!(new_unique_id(vec!["0".to_string(), "2".to_string()]), "1".to_string());
|
||||
// end
|
||||
assert_eq!(new_unique_id(vec!["0".to_string(), "1".to_string()]), "2".to_string());
|
||||
// check deduplication
|
||||
assert_eq!(new_unique_id(vec!["0".to_string(), "0".to_string()]), "1".to_string());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue