mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2025-12-23 02:29:57 +00:00
More functionality in the ownedbytes crate (#1172)
This commit is contained in:
@@ -37,7 +37,7 @@ tantivy-query-grammar = { version="0.15.0", path="./query-grammar" }
|
|||||||
tantivy-bitpacker = { version="0.1", path="./bitpacker" }
|
tantivy-bitpacker = { version="0.1", path="./bitpacker" }
|
||||||
common = { version = "0.1", path = "./common/", package = "tantivy-common" }
|
common = { version = "0.1", path = "./common/", package = "tantivy-common" }
|
||||||
fastfield_codecs = { version="0.1", path="./fastfield_codecs", default-features = false }
|
fastfield_codecs = { version="0.1", path="./fastfield_codecs", default-features = false }
|
||||||
ownedbytes = { version="0.1", path="./ownedbytes" }
|
ownedbytes = { version="0.2", path="./ownedbytes" }
|
||||||
stable_deref_trait = "1.2"
|
stable_deref_trait = "1.2"
|
||||||
rust-stemmers = "1.2"
|
rust-stemmers = "1.2"
|
||||||
downcast-rs = "1.2"
|
downcast-rs = "1.2"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ description = "common traits and utility functions used by multiple tantivy subc
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
byteorder = "1.4.3"
|
byteorder = "1.4.3"
|
||||||
ownedbytes = { version="0.1", path="../ownedbytes" }
|
ownedbytes = { version="0.2", path="../ownedbytes" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
proptest = "1.0.0"
|
proptest = "1.0.0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
authors = ["Paul Masurel <paul@quickwit.io>", "Pascal Seitz <pascal@quickwit.io>"]
|
authors = ["Paul Masurel <paul@quickwit.io>", "Pascal Seitz <pascal@quickwit.io>"]
|
||||||
name = "ownedbytes"
|
name = "ownedbytes"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
description = "Expose data as static slice"
|
description = "Expose data as static slice"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
@@ -76,6 +76,19 @@ impl OwnedBytes {
|
|||||||
(left, right)
|
(left, right)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Splits the right part of the `OwnedBytes` at the given offset.
|
||||||
|
///
|
||||||
|
/// `self` is truncated to `split_len`, left with the remaining bytes.
|
||||||
|
pub fn split_off(&mut self, split_len: usize) -> OwnedBytes {
|
||||||
|
let right_box_stable_deref = self.box_stable_deref.clone();
|
||||||
|
let right_piece = OwnedBytes {
|
||||||
|
data: &self.data[split_len..],
|
||||||
|
box_stable_deref: right_box_stable_deref,
|
||||||
|
};
|
||||||
|
self.data = &self.data[..split_len];
|
||||||
|
right_piece
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns true iff this `OwnedBytes` is empty.
|
/// Returns true iff this `OwnedBytes` is empty.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_empty(&self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
@@ -124,6 +137,35 @@ impl fmt::Debug for OwnedBytes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl PartialEq for OwnedBytes {
|
||||||
|
fn eq(&self, other: &OwnedBytes) -> bool {
|
||||||
|
self.as_slice() == other.as_slice()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Eq for OwnedBytes {}
|
||||||
|
|
||||||
|
impl PartialEq<[u8]> for OwnedBytes {
|
||||||
|
fn eq(&self, other: &[u8]) -> bool {
|
||||||
|
self.as_slice() == other
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PartialEq<str> for OwnedBytes {
|
||||||
|
fn eq(&self, other: &str) -> bool {
|
||||||
|
self.as_slice() == other.as_bytes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T: ?Sized> PartialEq<&'a T> for OwnedBytes
|
||||||
|
where
|
||||||
|
OwnedBytes: PartialEq<T>,
|
||||||
|
{
|
||||||
|
fn eq(&self, other: &&'a T) -> bool {
|
||||||
|
*self == **other
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Deref for OwnedBytes {
|
impl Deref for OwnedBytes {
|
||||||
type Target = [u8];
|
type Target = [u8];
|
||||||
|
|
||||||
@@ -287,4 +329,14 @@ mod tests {
|
|||||||
assert_eq!(right.as_slice(), b"");
|
assert_eq!(right.as_slice(), b"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_split_off() {
|
||||||
|
let mut data = OwnedBytes::new(b"abcdef".as_ref());
|
||||||
|
assert_eq!(data, "abcdef");
|
||||||
|
assert_eq!(data.split_off(2), "cdef");
|
||||||
|
assert_eq!(data, "ab");
|
||||||
|
assert_eq!(data.split_off(1), "b");
|
||||||
|
assert_eq!(data, "a");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user