1use crate::stream;
4
5pub type ReadErrorFor<T> = <T as stream::Read>::Error;
7
8pub type WriteErrorFor<T> = <T as stream::Write>::Error;
10
11pub type ReadChunkErrorFor<T, Data> = <T as stream::ReadChunk<Data>>::Error;
13
14pub type WriteChunkErrorFor<T, Data> = <T as stream::WriteChunk<Data>>::Error;
16
17pub type ReadAbortErrorFor<T> = <T as stream::ReadAbort>::Error;
19
20pub type WriteAbortErrorFor<T> = <T as stream::WriteAbort>::Error;
22
23pub type WriteAbortedErrorFor<T> = <T as stream::WriteAborted>::Error;
25
26pub type FinishErrorFor<T> = <T as stream::Finish>::Error;
28
29pub trait ErrorAsErrorCodeExt: stream::ErrorAsErrorCode {
31 fn is_error_code(&self, expected_code: stream::ErrorCode) -> bool;
33
34 fn is_closed(&self) -> bool;
36}
37
38impl dyn ErrorAsErrorCodeExt {}
40
41impl<T> ErrorAsErrorCodeExt for T
42where
43 T: ?Sized + stream::ErrorAsErrorCode,
44{
45 fn is_error_code(&self, expected_error_code: stream::ErrorCode) -> bool {
46 let Some(error_code) = self.as_error_code() else {
47 return false;
48 };
49
50 error_code == expected_error_code
51 }
52
53 fn is_closed(&self) -> bool {
54 self.is_error_code(0)
55 }
56}