1- use std:: ops:: Deref ;
1+ use std:: { ops:: Deref , path :: PathBuf } ;
22
33use mlua:: { ExternalError , FromLua , Lua , UserData , Value } ;
4+ use yazi_shared:: path:: PathBufLike ;
45
5- pub struct Urn {
6- inner : yazi_shared:: url:: UrnBuf ,
6+ pub struct Urn < P : PathBufLike = PathBuf > {
7+ inner : yazi_shared:: url:: UrnBuf < P > ,
78}
89
9- impl Deref for Urn {
10- type Target = yazi_shared:: url:: UrnBuf ;
10+ impl < P > Deref for Urn < P >
11+ where
12+ P : PathBufLike ,
13+ {
14+ type Target = yazi_shared:: url:: UrnBuf < P > ;
1115
1216 fn deref ( & self ) -> & Self :: Target { & self . inner }
1317}
1418
15- impl From < Urn > for yazi_shared:: url:: UrnBuf {
16- fn from ( value : Urn ) -> Self { value. inner }
19+ impl < P > From < Urn < P > > for yazi_shared:: url:: UrnBuf < P >
20+ where
21+ P : PathBufLike ,
22+ {
23+ fn from ( value : Urn < P > ) -> Self { value. inner }
1724}
1825
19- impl Urn {
20- pub fn new ( urn : impl Into < yazi_shared:: url:: UrnBuf > ) -> Self { Self { inner : urn. into ( ) } }
26+ impl < P > Urn < P >
27+ where
28+ P : PathBufLike ,
29+ {
30+ pub fn new ( urn : impl Into < yazi_shared:: url:: UrnBuf < P > > ) -> Self { Self { inner : urn. into ( ) } }
2131}
2232
23- impl FromLua for Urn {
33+ impl < P > FromLua for Urn < P >
34+ where
35+ P : PathBufLike ,
36+ {
2437 fn from_lua ( value : Value , _: & Lua ) -> mlua:: Result < Self > {
2538 Ok ( match value {
2639 Value :: UserData ( ud) => ud. take ( ) ?,
@@ -29,4 +42,4 @@ impl FromLua for Urn {
2942 }
3043}
3144
32- impl UserData for Urn { }
45+ impl < P > UserData for Urn < P > where P : PathBufLike { }
0 commit comments