allow more types to be used as paths

This commit is contained in:
Wuelle
2021-12-30 21:59:17 +01:00
parent 69fd5f310c
commit 5e563cddf8
2 changed files with 9 additions and 6 deletions

View File

@@ -1,6 +1,8 @@
use std::fs::File; use std::fs::File;
use std::path::Path;
use std::io::SeekFrom; use std::io::SeekFrom;
use std::io::Cursor; use std::io::Cursor;
use std::io::{Read, Seek, BufReader}; use std::io::{Read, Seek, BufReader};
@@ -198,7 +200,7 @@ pub struct WaveReader<R: Read + Seek> {
impl WaveReader<BufReader<File>> { impl WaveReader<BufReader<File>> {
pub fn open(path: &str) -> Result<Self, ParserError> { pub fn open<P: AsRef<Path>>(path: P) -> Result<Self, ParserError> {
let f = File::open(path)?; let f = File::open(path)?;
let inner = BufReader::new(f); let inner = BufReader::new(f);
Ok( Self::new(inner)? ) Ok( Self::new(inner)? )
@@ -211,7 +213,7 @@ impl WaveReader<File> {
/// ///
/// A convenience that opens `path` and calls `Self::new()` /// A convenience that opens `path` and calls `Self::new()`
pub fn open_unbuffered(path: &str) -> Result<Self, ParserError> { pub fn open_unbuffered<P: AsRef<Path>>(path: P) -> Result<Self, ParserError> {
let inner = File::open(path)?; let inner = File::open(path)?;
return Ok( Self::new(inner)? ) return Ok( Self::new(inner)? )
} }
@@ -600,4 +602,4 @@ fn test_list_form() {
assert_ne!(buf.len(), 0); assert_ne!(buf.len(), 0);
} }

View File

@@ -1,4 +1,5 @@
use std::fs::File; use std::fs::File;
use std::path::Path;
use std::io::{Write,Seek,SeekFrom,Cursor,BufWriter}; use std::io::{Write,Seek,SeekFrom,Cursor,BufWriter};
use super::Error; use super::Error;
@@ -213,7 +214,7 @@ const DS64_RESERVATION_LENGTH : u32 = 96;
impl WaveWriter<BufWriter<File>> { impl WaveWriter<BufWriter<File>> {
/// Create a new Wave file at `path`. /// Create a new Wave file at `path`.
pub fn create(path : &str, format : WaveFmt) -> Result<Self, Error> { pub fn create<P: AsRef<Path>>(path : P, format : WaveFmt) -> Result<Self, Error> {
let f = File::create(path)?; let f = File::create(path)?;
let b = BufWriter::new(f); let b = BufWriter::new(f);
Ok( Self::new(b, format)? ) Ok( Self::new(b, format)? )
@@ -222,7 +223,7 @@ impl WaveWriter<BufWriter<File>> {
impl WaveWriter<File> { impl WaveWriter<File> {
/// Creare a new Wave file with unbuffered IO at `path` /// Creare a new Wave file with unbuffered IO at `path`
pub fn create_unbuffered(path : &str, format : WaveFmt) -> Result<Self, Error> { pub fn create_unbuffered<P: AsRef<Path>>(path : P, format : WaveFmt) -> Result<Self, Error> {
let f = File::create(path)?; let f = File::create(path)?;
Ok( Self::new(f, format)? ) Ok( Self::new(f, format)? )
} }
@@ -521,4 +522,4 @@ fn test_create_rf64() {
cursor.seek(SeekFrom::Current(data_size as i64)).unwrap(); cursor.seek(SeekFrom::Current(data_size as i64)).unwrap();
assert_eq!(4 + 8 + ds64_size as u64 + 8 + data_size + 8 + fmt_size as u64 + 8 + elm1_size as u64, form_size) assert_eq!(4 + 8 + ds64_size as u64 + 8 + data_size + 8 + fmt_size as u64 + 8 + elm1_size as u64, form_size)
} }