changeset 70:edfa0acbae13

Merge pull request #2 from thomaskrause/feature/windows-support Implement RandomAccess for File on Windows.
author Lewin Bormann <lbo@spheniscida.de>
date Mon, 17 Feb 2020 10:52:52 +0100
parents cf194f28e5ec (current diff) b3aba9007285 (diff)
children 8231d8560815
files
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/.travis.yml	Mon Feb 17 10:39:34 2020 +0100
+++ b/.travis.yml	Mon Feb 17 10:52:52 2020 +0100
@@ -1,6 +1,7 @@
 os:
   - linux
   - osx
+  - windows
 dist: bionic
 sudo: false
 addons:
--- a/src/types.rs	Mon Feb 17 10:39:34 2020 +0100
+++ b/src/types.rs	Mon Feb 17 10:52:52 2020 +0100
@@ -4,7 +4,10 @@
 
 use std::cell::RefCell;
 use std::fs::File;
+#[cfg(unix)]
 use std::os::unix::fs::FileExt;
+#[cfg(windows)]
+use std::os::windows::fs::FileExt;
 use std::rc::Rc;
 
 pub trait RandomAccess {
@@ -31,12 +34,20 @@
     }
 }
 
+#[cfg(unix)]
 impl RandomAccess for File {
     fn read_at(&self, off: usize, dst: &mut [u8]) -> Result<usize> {
         Ok((self as &dyn FileExt).read_at(dst, off as u64)?)
     }
 }
 
+#[cfg(windows)]
+impl RandomAccess for File {
+    fn read_at(&self, off: usize, dst: &mut [u8]) -> Result<usize> {
+        Ok((self as &dyn FileExt).seek_read(dst, off as u64)?)
+    }
+}
+
 /// A shared thingy with interior mutability.
 pub type Shared<T> = Rc<RefCell<T>>;