44
55use crate :: io:: { FlushWriter , PairedWriters , RecordWriters } ;
66use std:: io:: Write ;
7- use zoe:: { data:: fasta:: FastaSeq , prelude:: FastQ } ;
7+ use zoe:: {
8+ data:: fasta:: FastaSeq ,
9+ prelude:: { FastQ , FastQView , FastQViewMut } ,
10+ } ;
811
912/// A trait providing the ability for a record or record-like struct to write
1013/// itself, where the supported writer is given by `W`.
@@ -20,21 +23,65 @@ impl<W: Write> WriteRecord<W> for FastQ {
2023 }
2124}
2225
26+ impl < W : Write > WriteRecord < W > for FastQView < ' _ > {
27+ #[ inline]
28+ fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
29+ write ! ( writer, "{self}" )
30+ }
31+ }
32+
33+ impl < W : Write > WriteRecord < W > for FastQViewMut < ' _ > {
34+ #[ inline]
35+ fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
36+ write ! ( writer, "{self}" )
37+ }
38+ }
39+
2340impl < W : Write > WriteRecord < W > for FastaSeq {
2441 #[ inline]
2542 fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
2643 write ! ( writer, "{self}" )
2744 }
2845}
2946
30- impl < W : Write > WriteRecord < W > for std:: io:: Result < FastQ > {
47+ impl < W , E > WriteRecord < W > for Result < FastQ , E >
48+ where
49+ W : Write ,
50+ std:: io:: Error : From < E > ,
51+ {
52+ #[ inline]
53+ fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
54+ write ! ( writer, "{}" , self ?)
55+ }
56+ }
57+
58+ impl < W , E > WriteRecord < W > for Result < FastQView < ' _ > , E >
59+ where
60+ W : Write ,
61+ std:: io:: Error : From < E > ,
62+ {
63+ #[ inline]
64+ fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
65+ write ! ( writer, "{}" , self ?)
66+ }
67+ }
68+
69+ impl < W , E > WriteRecord < W > for Result < FastQViewMut < ' _ > , E >
70+ where
71+ W : Write ,
72+ std:: io:: Error : From < E > ,
73+ {
3174 #[ inline]
3275 fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
3376 write ! ( writer, "{}" , self ?)
3477 }
3578}
3679
37- impl < W : Write > WriteRecord < W > for std:: io:: Result < FastaSeq > {
80+ impl < W , E > WriteRecord < W > for Result < FastaSeq , E >
81+ where
82+ W : Write ,
83+ std:: io:: Error : From < E > ,
84+ {
3885 #[ inline]
3986 fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
4087 write ! ( writer, "{}" , self ?)
@@ -69,11 +116,12 @@ where
69116 }
70117}
71118
72- impl < A , B , W > WriteRecord < W > for std :: io :: Result < ( A , B ) >
119+ impl < A , B , W , E > WriteRecord < W > for Result < ( A , B ) , E >
73120where
74121 A : WriteRecord < W > ,
75122 B : WriteRecord < W > ,
76123 W : Write ,
124+ std:: io:: Error : From < E > ,
77125{
78126 #[ inline]
79127 fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
@@ -83,11 +131,12 @@ where
83131 }
84132}
85133
86- impl < A , B , W > WriteRecord < PairedWriters < W > > for std :: io :: Result < ( A , B ) >
134+ impl < A , B , W , E > WriteRecord < PairedWriters < W > > for Result < ( A , B ) , E >
87135where
88136 A : WriteRecord < W > ,
89137 B : WriteRecord < W > ,
90138 W : Write ,
139+ std:: io:: Error : From < E > ,
91140{
92141 #[ inline]
93142 fn write_record ( self , writer : & mut PairedWriters < W > ) -> std:: io:: Result < ( ) > {
@@ -123,10 +172,11 @@ where
123172 }
124173}
125174
126- impl < A , W > WriteRecord < W > for std :: io :: Result < [ A ; 2 ] >
175+ impl < A , W , E > WriteRecord < W > for Result < [ A ; 2 ] , E >
127176where
128177 A : WriteRecord < W > ,
129178 W : Write ,
179+ std:: io:: Error : From < E > ,
130180{
131181 #[ inline]
132182 fn write_record ( self , writer : & mut W ) -> std:: io:: Result < ( ) > {
@@ -136,10 +186,11 @@ where
136186 }
137187}
138188
139- impl < A , W > WriteRecord < PairedWriters < W > > for std :: io :: Result < [ A ; 2 ] >
189+ impl < A , W , E > WriteRecord < PairedWriters < W > > for Result < [ A ; 2 ] , E >
140190where
141191 A : WriteRecord < W > ,
142192 W : Write ,
193+ std:: io:: Error : From < E > ,
143194{
144195 #[ inline]
145196 fn write_record ( self , writer : & mut PairedWriters < W > ) -> std:: io:: Result < ( ) > {
0 commit comments