Skip to content

Commit 3f15b17

Browse files
committed
slice: add path and pathbuf impls
1 parent e506920 commit 3f15b17

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/slice.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ mod slice_arc;
88
#[cfg(feature = "bytes")]
99
mod slice_bytes;
1010

11-
use std::sync::Arc;
11+
use std::{
12+
path::{Path, PathBuf},
13+
sync::Arc,
14+
};
1215

1316
#[cfg(not(feature = "bytes"))]
1417
pub use slice_arc::Slice;
@@ -45,6 +48,18 @@ impl From<&String> for Slice {
4548
}
4649
}
4750

51+
impl From<&Path> for Slice {
52+
fn from(value: &Path) -> Self {
53+
Self::from(value.as_os_str().as_encoded_bytes())
54+
}
55+
}
56+
57+
impl From<PathBuf> for Slice {
58+
fn from(value: PathBuf) -> Self {
59+
Self::from(value.as_os_str().as_encoded_bytes())
60+
}
61+
}
62+
4863
impl From<Arc<str>> for Slice {
4964
fn from(value: Arc<str>) -> Self {
5065
Self::from(&*value)
@@ -161,6 +176,7 @@ mod serde {
161176
}
162177

163178
#[cfg(test)]
179+
#[allow(clippy::expect_used)]
164180
mod tests {
165181
use super::Slice;
166182
use std::{fmt::Debug, sync::Arc};
@@ -204,7 +220,7 @@ mod tests {
204220

205221
// - io::Read
206222
let reader = std::io::Cursor::new(vec![1, 2, 3, 4]);
207-
let slice = Slice::from_reader(&mut reader.clone(), 4).expect("read");
223+
let slice = Slice::from_reader(&mut reader, 4).expect("read");
208224
assert_eq!(slice, vec![1, 2, 3, 4]);
209225
}
210226
}

0 commit comments

Comments
 (0)