chore: Using a fork of the fst library that support Arc<[u8]>

This commit is contained in:
Clément Renault 2019-04-08 16:16:31 +02:00
parent 9be7c02461
commit f7eced03fd
No known key found for this signature in database
GPG key ID: 0151CDAB43460DAE
3 changed files with 24 additions and 7 deletions

View file

@ -1,9 +1,9 @@
use std::sync::Arc;
use std::ops::Deref;
#[derive(Default, Clone)]
#[derive(Clone)]
pub struct SharedData {
pub bytes: Arc<Vec<u8>>,
pub bytes: Arc<[u8]>,
pub offset: usize,
pub len: usize,
}
@ -15,7 +15,7 @@ impl SharedData {
SharedData::new(bytes, 0, len)
}
pub fn new(bytes: Arc<Vec<u8>>, offset: usize, len: usize) -> SharedData {
pub fn new(bytes: Arc<[u8]>, offset: usize, len: usize) -> SharedData {
SharedData { bytes, offset, len }
}
@ -33,6 +33,16 @@ impl SharedData {
}
}
impl Default for SharedData {
fn default() -> SharedData {
SharedData {
bytes: Arc::from(Vec::new()),
offset: 0,
len: 0,
}
}
}
impl Deref for SharedData {
type Target = [u8];

View file

@ -7,12 +7,12 @@ pub struct SharedDataCursor(Cursor<SharedData>);
impl SharedDataCursor {
pub fn from_bytes(bytes: Vec<u8>) -> SharedDataCursor {
let len = bytes.len();
let bytes = Arc::new(bytes);
let bytes = Arc::from(bytes);
SharedDataCursor::from_shared_bytes(bytes, 0, len)
}
pub fn from_shared_bytes(bytes: Arc<Vec<u8>>, offset: usize, len: usize) -> SharedDataCursor {
pub fn from_shared_bytes(bytes: Arc<[u8]>, offset: usize, len: usize) -> SharedDataCursor {
let data = SharedData::new(bytes, offset, len);
let cursor = Cursor::new(data);