1- use std:: { io, path:: PathBuf } ;
1+ use std:: { io, path:: Path } ;
22
33use tokio:: sync:: mpsc;
44
@@ -20,53 +20,53 @@ pub fn split() -> (Server, Client) {
2020
2121#[ allow( async_fn_in_trait) ]
2222pub trait FsOffload {
23- async fn read ( & self , path : PathBuf ) -> io:: Result < Vec < u8 > > ;
24- async fn write ( & self , path : PathBuf , content : Vec < u8 > ) -> io:: Result < ( ) > ;
25- async fn read_dir ( & self , path : PathBuf ) -> io:: Result < ReadDir > ;
26- async fn create_dir ( & self , path : PathBuf ) -> io:: Result < ( ) > ;
27- async fn create_dir_all ( & self , path : PathBuf ) -> io:: Result < ( ) > ;
28- async fn remove_file ( & self , path : PathBuf ) -> io:: Result < ( ) > ;
29- async fn remove_dir ( & self , path : PathBuf ) -> io:: Result < ( ) > ;
30- async fn remove_dir_all ( & self , path : PathBuf ) -> io:: Result < ( ) > ;
31- async fn metadata ( & self , path : PathBuf ) -> io:: Result < Metadata > ;
23+ async fn read ( & self , path : impl AsRef < Path > ) -> io:: Result < Vec < u8 > > ;
24+ async fn write ( & self , path : impl AsRef < Path > , content : impl AsRef < [ u8 ] > ) -> io:: Result < ( ) > ;
25+ async fn read_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ReadDir > ;
26+ async fn create_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > ;
27+ async fn create_dir_all ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > ;
28+ async fn remove_file ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > ;
29+ async fn remove_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > ;
30+ async fn remove_dir_all ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > ;
31+ async fn metadata ( & self , path : impl AsRef < Path > ) -> io:: Result < Metadata > ;
3232}
3333
3434pub struct FsOffloadDefault ;
3535
3636impl FsOffload for FsOffloadDefault {
37- async fn read ( & self , path : PathBuf ) -> io:: Result < Vec < u8 > > {
37+ async fn read ( & self , path : impl AsRef < Path > ) -> io:: Result < Vec < u8 > > {
3838read ( path) . await
3939}
4040
41- async fn write ( & self , path : PathBuf , content : Vec < u8 > ) -> io:: Result < ( ) > {
41+ async fn write ( & self , path : impl AsRef < Path > , content : impl AsRef < [ u8 ] > ) -> io:: Result < ( ) > {
4242write ( path, content) . await
4343}
4444
45- async fn read_dir ( & self , path : PathBuf ) -> io:: Result < ReadDir > {
45+ async fn read_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ReadDir > {
4646read_dir ( path) . await
4747}
4848
49- async fn create_dir ( & self , path : PathBuf ) -> io:: Result < ( ) > {
49+ async fn create_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > {
5050create_dir ( path) . await
5151}
5252
53- async fn create_dir_all ( & self , path : PathBuf ) -> io:: Result < ( ) > {
53+ async fn create_dir_all ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > {
5454create_dir_all ( path) . await
5555}
5656
57- async fn remove_file ( & self , path : PathBuf ) -> io:: Result < ( ) > {
57+ async fn remove_file ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > {
5858remove_file ( path) . await
5959}
6060
61- async fn remove_dir ( & self , path : PathBuf ) -> io:: Result < ( ) > {
61+ async fn remove_dir ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > {
6262remove_dir ( path) . await
6363}
6464
65- async fn remove_dir_all ( & self , path : PathBuf ) -> io:: Result < ( ) > {
65+ async fn remove_dir_all ( & self , path : impl AsRef < Path > ) -> io:: Result < ( ) > {
6666remove_dir_all ( path) . await
6767}
6868
69- async fn metadata ( & self , path : PathBuf ) -> io:: Result < Metadata > {
69+ async fn metadata ( & self , path : impl AsRef < Path > ) -> io:: Result < Metadata > {
7070metadata ( path) . await
7171}
7272}