pub trait GenericStoredVec<I, T>: Send + Syncwhere
I: StoredIndex,
T: StoredType,{
const SIZE_OF_T: usize = _;
Show 32 methods
// Required methods
fn read_(&self, index: usize, mmap: &Mmap) -> Result<Option<T>>;
fn mmap(&self) -> &ArcSwap<Mmap>;
fn stored_len(&self) -> usize;
fn pushed(&self) -> &[T];
fn mut_pushed(&mut self) -> &mut Vec<T>;
fn path(&self) -> &Path;
fn flush(&mut self) -> Result<()>;
fn truncate_if_needed(&mut self, index: I) -> Result<()>;
// Provided methods
fn read(&self, index: I, mmap: &Mmap) -> Result<Option<T>> { ... }
fn get_or_read(&self, index: I, mmap: &Mmap) -> Result<Option<Value<'_, T>>> { ... }
fn get_or_read_(
&self,
index: usize,
mmap: &Mmap,
) -> Result<Option<Value<'_, T>>> { ... }
fn len_(&self) -> usize { ... }
fn pushed_len(&self) -> usize { ... }
fn push(&mut self, value: T) { ... }
fn open_file(&self) -> Result<File> { ... }
fn open_file_(path: &Path) -> Result<File> { ... }
fn file_set_len(&mut self, len: u64) -> Result<()> { ... }
fn file_set_len_(file: &mut File, len: u64) -> Result<()> { ... }
fn file_write_all(&mut self, buf: &[u8]) -> Result<()> { ... }
fn file_truncate_and_write_all(
&mut self,
len: u64,
buf: &[u8],
) -> Result<()> { ... }
fn reset(&mut self) -> Result<()> { ... }
fn new_mmap(file: File) -> Result<Arc<Mmap>> { ... }
fn update_mmap(&mut self, file: File) -> Result<()> { ... }
fn is_pushed_empty(&self) -> bool { ... }
fn has(&self, index: I) -> Result<bool> { ... }
fn has_(&self, index: usize) -> bool { ... }
fn path_vec(&self) -> PathBuf { ... }
fn path_vec_(path: &Path) -> PathBuf { ... }
fn path_version_(path: &Path) -> PathBuf { ... }
fn path_compressed_(path: &Path) -> PathBuf { ... }
fn name_(&self) -> String { ... }
fn modified_time_(&self) -> Result<Duration> { ... }
}Provided Associated Constants§
Required Methods§
fn read_(&self, index: usize, mmap: &Mmap) -> Result<Option<T>>
fn mmap(&self) -> &ArcSwap<Mmap>
fn stored_len(&self) -> usize
fn pushed(&self) -> &[T]
fn mut_pushed(&mut self) -> &mut Vec<T>
fn path(&self) -> &Path
fn flush(&mut self) -> Result<()>
fn truncate_if_needed(&mut self, index: I) -> Result<()>
Provided Methods§
fn read(&self, index: I, mmap: &Mmap) -> Result<Option<T>>
fn get_or_read(&self, index: I, mmap: &Mmap) -> Result<Option<Value<'_, T>>>
fn get_or_read_( &self, index: usize, mmap: &Mmap, ) -> Result<Option<Value<'_, T>>>
fn len_(&self) -> usize
fn pushed_len(&self) -> usize
Sourcefn push(&mut self, value: T)
fn push(&mut self, value: T)
Examples found in repository?
examples/main.rs (line 18)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let _ = fs::remove_dir_all("./vec");
9
10 let version = Version::ZERO;
11 let compressed = Compressed::YES;
12
13 {
14 let mut vec: StoredVec<usize, u32> =
15 StoredVec::forced_import(Path::new("./vec"), version, compressed)?;
16
17 (0..21_u32).for_each(|v| {
18 vec.push(v);
19 });
20
21 let mut iter = vec.into_iter();
22 dbg!(iter.get(0));
23 dbg!(iter.get(20));
24 dbg!(iter.get(21));
25
26 vec.flush()?;
27 }
28
29 {
30 let mut vec: StoredVec<usize, u32> =
31 StoredVec::forced_import(Path::new("./vec"), version, compressed)?;
32 let mut iter = vec.into_iter();
33
34 dbg!(iter.get(0));
35 dbg!(iter.get(0));
36 dbg!(iter.get(1));
37 dbg!(iter.get(2));
38 dbg!(iter.get(20));
39 dbg!(iter.get(20));
40 dbg!(iter.get(0));
41
42 vec.push(21);
43 vec.push(22);
44
45 let mut iter = vec.into_iter();
46
47 dbg!(iter.get(20));
48 dbg!(iter.get(21));
49 dbg!(iter.get(22));
50 dbg!(iter.get(23));
51
52 vec.flush()?;
53 }
54
55 {
56 let mut vec: StoredVec<usize, u32> =
57 StoredVec::forced_import(Path::new("./vec"), version, compressed)?;
58 let mut iter = vec.into_iter();
59
60 dbg!(iter.get(0));
61 dbg!(iter.get(20));
62 dbg!(iter.get(21));
63 dbg!(iter.get(22));
64
65 vec.truncate_if_needed(14)?;
66
67 let mut iter = vec.into_iter();
68
69 iter.get(0);
70 iter.get(5);
71 dbg!(iter.get(20));
72
73 dbg!(vec.collect_signed_range(Some(-5), None)?);
74
75 vec.push(vec.len() as u32);
76 dbg!(VecIterator::last(vec.into_iter()));
77
78 dbg!(vec.into_iter().collect::<Vec<_>>());
79 }
80
81 Ok(())
82}fn open_file(&self) -> Result<File>
fn open_file_(path: &Path) -> Result<File>
fn file_set_len(&mut self, len: u64) -> Result<()>
fn file_set_len_(file: &mut File, len: u64) -> Result<()>
fn file_write_all(&mut self, buf: &[u8]) -> Result<()>
fn file_truncate_and_write_all(&mut self, len: u64, buf: &[u8]) -> Result<()>
fn reset(&mut self) -> Result<()>
fn new_mmap(file: File) -> Result<Arc<Mmap>>
fn update_mmap(&mut self, file: File) -> Result<()>
fn is_pushed_empty(&self) -> bool
fn has(&self, index: I) -> Result<bool>
fn has_(&self, index: usize) -> bool
fn path_vec(&self) -> PathBuf
fn path_vec_(path: &Path) -> PathBuf
fn path_version_(path: &Path) -> PathBuf
fn path_compressed_(path: &Path) -> PathBuf
fn name_(&self) -> String
fn modified_time_(&self) -> Result<Duration>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.