io_at/os/
file.rs

1use super::super::*;
2use std::fs::File;
3use super::{pread,pwrite};
4
5impl ReadAt for File {
6    #[inline]
7    fn read_at(&self, buf: &mut[u8], offs: u64) -> Result<usize> {
8        pread(self, buf, offs)
9    }
10}
11
12impl WriteAt for File {
13    #[inline]
14    fn write_at(&mut self, buf: &[u8], offs: u64) -> Result<usize> {
15        pwrite(self, buf, offs)
16    }
17}
18
19/**
20 * File can also be written via '&' (non-mutable reference) due to os intervention
21 */
22impl<'a> WriteAt for &'a File {
23    #[inline]
24    fn write_at(&mut self, buf: &[u8], offs: u64) -> Result<usize> {
25        pwrite(*self, buf, offs)
26    }
27}
28
29#[cfg(test)]
30mod test {
31    use super::super::super::test_impl;
32    #[test]
33    fn base() {
34        use tempfile;
35        let f = tempfile::tempfile().unwrap();
36        test_impl(f);
37    }
38
39    #[test]
40    fn ref_() {
41        use tempfile;
42        let f = tempfile::tempfile().unwrap();
43        test_impl(&f);
44    }
45}