From: Kostya Shishkov Date: Thu, 10 Sep 2020 10:18:57 +0000 (+0200) Subject: core/io: switch FileReader and FileWriter to work with standard traits X-Git-Url: https://git.nihav.org/?p=nihav.git;a=commitdiff_plain;h=789354a8ca628eb09dd4aaf2ec660eeb7f21be9a core/io: switch FileReader and FileWriter to work with standard traits --- diff --git a/nihav-core/src/io/byteio.rs b/nihav-core/src/io/byteio.rs index 7da5e22..3677501 100644 --- a/nihav-core/src/io/byteio.rs +++ b/nihav-core/src/io/byteio.rs @@ -1,6 +1,5 @@ //! Bytestream reading/writing functionality. pub use std::io::SeekFrom; -use std::fs::File; use std::io::prelude::*; use std::ptr; @@ -85,9 +84,9 @@ pub struct MemoryReader<'a> { pos: usize, } -/// Bytestream reader from file. -pub struct FileReader<'a> { - file: &'a File, +/// Bytestream reader from anything implementing `std::io::Read` and `std::io::Seek`. +pub struct FileReader { + file: Box, eof: bool, } @@ -540,15 +539,15 @@ impl<'a> ByteIO for MemoryReader<'a> { } } -impl<'a> FileReader<'a> { +impl FileReader { /// Constructs a new instance of `FileReader`. - pub fn new_read(file: &'a mut File) -> Self { - FileReader { file, eof : false } + pub fn new_read(file: T) -> Self { + FileReader { file: Box::new(file), eof : false } } } -impl<'a> ByteIO for FileReader<'a> { +impl ByteIO for FileReader { fn read_byte(&mut self) -> ByteIOResult { let mut byte : [u8; 1] = [0]; let ret = self.file.read(&mut byte); @@ -649,9 +648,9 @@ pub struct MemoryWriter<'a> { pos: usize, } -/// Bytestream writer to file. -pub struct FileWriter { - file: File, +/// Bytestream writer to anything implementing `std::io::Write` and `std::io::Seek`. +pub struct FileWriter { + file: Box, } /// Bytestream writer to memory. @@ -919,14 +918,14 @@ impl<'a> ByteIO for GrowableMemoryWriter<'a> { } } -impl FileWriter { +impl FileWriter { /// Constructs a new instance of `FileWriter`. - pub fn new_write(file: File) -> Self { - FileWriter { file } + pub fn new_write(file: T) -> Self { + FileWriter { file: Box::new(file) } } } -impl ByteIO for FileWriter { +impl ByteIO for FileWriter { #[allow(unused_variables)] fn read_byte(&mut self) -> ByteIOResult { Err(ByteIOError::NotImplemented)