1use crate::emit_traits;
2use newer_type::target;
3
4emit_traits! {
5 #[implement_of(newer_type_std::io::Read)]
6 #[slot(std::io::Cursor<Vec<u8>>)]
7 #[target(alternative = ::std::io::Read)]
8 pub trait Read {
9 fn read(&mut self, buf: &mut [::core::primitive::u8]) -> ::std::io::Result<::core::primitive::usize>;
10 }
11
12 #[implement_of(newer_type_std::io::Read)]
13 #[slot(std::io::Cursor<Vec<u8>>)]
14 #[target(alternative = ::std::io::Write)]
15 pub trait Write {
16 fn write(&mut self, buf: &[::core::primitive::u8]) -> ::std::io::Result<::core::primitive::usize>;
17 fn flush(&mut self) -> ::std::io::Result<()>;
18 fn write_all(&mut self, mut buf: &[::core::primitive::u8]) -> ::std::io::Result<()>;
19 }
20
21 #[implement_of(
22 newer_type_std::io::Read,
23 newer_type_std::io::BufRead,
24 )]
25 #[slot(std::io::Cursor<Vec<u8>>)]
26 #[target(alternative = ::std::io::BufRead)]
27 pub trait BufRead: [::std::io::Read] {
28 fn fill_buf(&mut self) -> ::std::io::Result<&[::core::primitive::u8]>;
29 fn consume(&mut self, amt: ::core::primitive::usize);
30 }
31}
32
33#[rustversion::since(1.80)]
34emit_traits! {
35 #[implement_of(newer_type_std::io::Seek)]
36 #[slot(std::fs::File)]
37 #[target(alternative = ::std::io::Seek)]
38 pub trait Seek {
39 fn seek(&mut self, pos: ::std::io::SeekFrom) -> ::std::io::Result<::core::primitive::u64>;
40 fn rewind(&mut self) -> ::std::io::Result<()>;
41 fn stream_position(&mut self) -> ::std::io::Result<::core::primitive::u64>;
42 fn seek_relative(&mut self, offset: ::core::primitive::i64) -> ::std::io::Result<()>;
43 }
44}
45
46#[rustversion::before(1.80)]
47emit_traits! {
48 #[implement_of(newer_type_std::io::Seek)]
49 #[slot(std::fs::File)]
50 #[target(alternative = ::std::io::Seek)]
51 pub trait Seek {
52 fn seek(&mut self, pos: ::std::io::SeekFrom) -> ::std::io::Result<::core::primitive::u64>;
53 fn rewind(&mut self) -> ::std::io::Result<()>;
54 fn stream_position(&mut self) -> ::std::io::Result<::core::primitive::u64>;
55 }
56}