11use fortanix_sgx_abi as abi;
22
3- use crate :: io;
3+ use crate :: io:: { self , BorrowedCursor , IoSlice , IoSliceMut } ;
44use crate :: sys:: fd:: FileDesc ;
55
66pub struct Stdin ( ( ) ) ;
@@ -24,6 +24,19 @@ impl io::Read for Stdin {
2424 fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
2525 with_std_fd ( abi:: FD_STDIN , |fd| fd. read ( buf) )
2626 }
27+
28+ fn read_buf ( & mut self , buf : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
29+ with_std_fd ( abi:: FD_STDIN , |fd| fd. read_buf ( buf) )
30+ }
31+
32+ fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
33+ with_std_fd ( abi:: FD_STDIN , |fd| fd. read_vectored ( bufs) )
34+ }
35+
36+ #[ inline]
37+ fn is_read_vectored ( & self ) -> bool {
38+ true
39+ }
2740}
2841
2942impl Stdout {
@@ -40,6 +53,15 @@ impl io::Write for Stdout {
4053 fn flush ( & mut self ) -> io:: Result < ( ) > {
4154 with_std_fd ( abi:: FD_STDOUT , |fd| fd. flush ( ) )
4255 }
56+
57+ fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
58+ with_std_fd ( abi:: FD_STDOUT , |fd| fd. write_vectored ( bufs) )
59+ }
60+
61+ #[ inline]
62+ fn is_write_vectored ( & self ) -> bool {
63+ true
64+ }
4365}
4466
4567impl Stderr {
@@ -56,6 +78,15 @@ impl io::Write for Stderr {
5678 fn flush ( & mut self ) -> io:: Result < ( ) > {
5779 with_std_fd ( abi:: FD_STDERR , |fd| fd. flush ( ) )
5880 }
81+
82+ fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
83+ with_std_fd ( abi:: FD_STDERR , |fd| fd. write_vectored ( bufs) )
84+ }
85+
86+ #[ inline]
87+ fn is_write_vectored ( & self ) -> bool {
88+ true
89+ }
5990}
6091
6192pub const STDIN_BUF_SIZE : usize = crate :: sys:: io:: DEFAULT_BUF_SIZE ;
0 commit comments