From 837e24ab4b46751bbd294bf0c144245142a562f8 Mon Sep 17 00:00:00 2001 From: EdJoPaTo Date: Sat, 20 May 2023 01:49:43 +0200 Subject: [PATCH] perf(identifier): use pattern matching way more efficient than manual slicing --- src/identifier.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/identifier.rs b/src/identifier.rs index 619fd67..adf4a54 100644 --- a/src/identifier.rs +++ b/src/identifier.rs @@ -23,12 +23,9 @@ pub type TreeIdentifierVec = Vec; /// assert_eq!(branch, []); /// assert_eq!(leaf, None); /// ``` -pub fn get_without_leaf(identifier: TreeIdentifier) -> (TreeIdentifier, Option<&usize>) { - let length = identifier.len(); - let length_without_leaf = length.saturating_sub(1); - - let branch = &identifier[0..length_without_leaf]; - let leaf = identifier.get(length_without_leaf); - - (branch, leaf) +pub const fn get_without_leaf(identifier: TreeIdentifier) -> (TreeIdentifier, Option<&usize>) { + match identifier { + [branch @ .., leaf] => (branch, Some(leaf)), + [] => (&[] as &[usize], None), + } }