yazi_shared/path/
conversion.rs1use super::{PathBufDyn, PathDyn};
2use crate::path::PathCow;
3
4pub trait AsPath {
6 fn as_path(&self) -> PathDyn<'_>;
7}
8
9impl AsPath for std::path::Path {
10 fn as_path(&self) -> PathDyn<'_> { PathDyn::Os(self) }
11}
12
13impl AsPath for std::path::PathBuf {
14 fn as_path(&self) -> PathDyn<'_> { PathDyn::Os(self) }
15}
16
17impl AsPath for typed_path::UnixPath {
18 fn as_path(&self) -> PathDyn<'_> { PathDyn::Unix(self) }
19}
20
21impl AsPath for typed_path::UnixPathBuf {
22 fn as_path(&self) -> PathDyn<'_> { PathDyn::Unix(self) }
23}
24
25impl AsPath for PathDyn<'_> {
26 fn as_path(&self) -> PathDyn<'_> { *self }
27}
28
29impl AsPath for PathBufDyn {
30 fn as_path(&self) -> PathDyn<'_> {
31 match self {
32 Self::Os(p) => PathDyn::Os(p),
33 Self::Unix(p) => PathDyn::Unix(p),
34 }
35 }
36}
37
38impl AsPath for PathCow<'_> {
39 fn as_path(&self) -> PathDyn<'_> {
40 match self {
41 PathCow::Borrowed(p) => *p,
42 PathCow::Owned(p) => p.as_path(),
43 }
44 }
45}
46
47impl AsPath for super::Components<'_> {
48 fn as_path(&self) -> PathDyn<'_> { self.path() }
49}
50
51pub trait AsPathRef<'a> {
53 fn as_path_ref(self) -> PathDyn<'a>;
54}
55
56impl<'a> AsPathRef<'a> for PathDyn<'a> {
57 fn as_path_ref(self) -> Self { self }
58}