Skip to content

Commit f23f994

Browse files
committed
Implement AsRef<[u8]>, Borrow<[u8]>, and Deref<Target=[u8]> for Key
1 parent 7c78aad commit f23f994

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/kv/key.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// Copyright 2019 TiKV Project Authors. Licensed under Apache-2.0.
22

3+
use std::borrow::Borrow;
34
use std::fmt;
4-
use std::ops::Bound;
5+
use std::ops::{Bound, Deref};
56

67
#[allow(unused_imports)]
78
#[cfg(test)]
@@ -156,6 +157,26 @@ impl Key {
156157
}
157158
}
158159

160+
impl AsRef<[u8]> for Key {
161+
fn as_ref(&self) -> &[u8] {
162+
self.0.as_ref()
163+
}
164+
}
165+
166+
impl Borrow<[u8]> for Key {
167+
fn borrow(&self) -> &[u8] {
168+
self.0.borrow()
169+
}
170+
}
171+
172+
impl Deref for Key {
173+
type Target = [u8];
174+
175+
fn deref(&self) -> &Self::Target {
176+
self.0.deref()
177+
}
178+
}
179+
159180
impl From<Vec<u8>> for Key {
160181
fn from(v: Vec<u8>) -> Self {
161182
Key(v)
@@ -185,6 +206,7 @@ impl<'a> From<&'a Vec<u8>> for &'a Key {
185206
unsafe { &*(key as *const Vec<u8> as *const Key) }
186207
}
187208
}
209+
188210
impl AsRef<Key> for Key {
189211
fn as_ref(&self) -> &Key {
190212
self

src/region_cache.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ impl<C: RetryClientTrait> RegionCache<C> {
7474
let res = {
7575
region_cache_guard
7676
.key_to_ver_id
77-
.range(..=key)
77+
.range::<Key, _>(..=key)
7878
.next_back()
7979
.map(|(x, y)| (x.clone(), y.clone()))
8080
};
@@ -180,9 +180,9 @@ impl<C: RetryClientTrait> RegionCache<C> {
180180

181181
let mut search_range = {
182182
if end_key.is_empty() {
183-
cache.key_to_ver_id.range(..)
183+
cache.key_to_ver_id.range::<Key, _>(..)
184184
} else {
185-
cache.key_to_ver_id.range(..end_key)
185+
cache.key_to_ver_id.range::<Key, _>(..end_key)
186186
}
187187
};
188188
while let Some((_, ver_id_in_cache)) = search_range.next_back() {

0 commit comments

Comments
 (0)