perf(identifier): use pattern matching
way more efficient than manual slicing
This commit is contained in:
+5
-8
@@ -23,12 +23,9 @@ pub type TreeIdentifierVec = Vec<usize>;
|
|||||||
/// assert_eq!(branch, []);
|
/// assert_eq!(branch, []);
|
||||||
/// assert_eq!(leaf, None);
|
/// assert_eq!(leaf, None);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_without_leaf(identifier: TreeIdentifier) -> (TreeIdentifier, Option<&usize>) {
|
pub const fn get_without_leaf(identifier: TreeIdentifier) -> (TreeIdentifier, Option<&usize>) {
|
||||||
let length = identifier.len();
|
match identifier {
|
||||||
let length_without_leaf = length.saturating_sub(1);
|
[branch @ .., leaf] => (branch, Some(leaf)),
|
||||||
|
[] => (&[] as &[usize], None),
|
||||||
let branch = &identifier[0..length_without_leaf];
|
}
|
||||||
let leaf = identifier.get(length_without_leaf);
|
|
||||||
|
|
||||||
(branch, leaf)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user