return subtrie corresponding to given key
(x: Option<NonNull<Node<T>>>, key: &str, d: usize)
| 121 | |
| 122 | // return subtrie corresponding to given key |
| 123 | unsafe fn get_dth<T>(x: Option<NonNull<Node<T>>>, key: &str, d: usize) -> Option<NonNull<Node<T>>> { |
| 124 | x.and_then(|x| { |
| 125 | let c = common::util::byte_at(key, d); |
| 126 | match c.cmp(&x.as_ref().c) { |
| 127 | Ordering::Less => get_dth(x.as_ref().left(), key, d), |
| 128 | Ordering::Greater => get_dth(x.as_ref().right(), key, d), |
| 129 | Ordering::Equal => { |
| 130 | if d < key.len() - 1 { |
| 131 | get_dth(x.as_ref().mid(), key, d + 1) |
| 132 | } else { |
| 133 | Some(x) |
| 134 | } |
| 135 | } |
| 136 | } |
| 137 | }) |
| 138 | } |
| 139 | |
| 140 | unsafe fn put_dth<T>( |
| 141 | x: Option<NonNull<Node<T>>>, |