读写

使用内存映射,随机访问文件
这个Mmap::map函数假定内存映射后面的文件,不会同时被另一个进程修改,或者竞争条件发生。

  1. extern crate memmap;
  2. use memmap::Mmap;
  3. use std::fs::File;
  4. use std::io::{Write, Error};
  5. fn main() -> Result<(), Error> {
  6. write!(File::create("content.txt")?, "My hovercraft is full of eels!")?;
  7. let file = File::open("content.txt")?;
  8. let map = unsafe { Mmap::map(&file)? };
  9. let random_indexes = [0, 1, 2, 19, 22, 10, 11, 29];
  10. assert_eq!(&map[3..13], b"hovercraft");
  11. let random_bytes: Vec<u8> = random_indexes.iter()
  12. .map(|&idx| map[idx])
  13. .collect();
  14. assert_eq!(&random_bytes[..], b"My loaf!");
  15. Ok(())
  16. }