@@ -28,15 +28,15 @@ use core::iter::from_fn;
28
28
/// # let x: NullTerminated = x.read_be().unwrap();
29
29
/// # assert_eq!(x.data, &[1, 2, 3, 4, 0]);
30
30
/// ```
31
- pub fn until < Reader , T , CondFn , Arg , Ret > (
31
+ pub fn until < Ret , T , Arg , CondFn , Reader > (
32
32
cond : CondFn ,
33
33
) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
34
34
where
35
+ Ret : FromIterator < T > ,
35
36
T : for < ' a > BinRead < Args < ' a > = Arg > ,
36
- Reader : Read + Seek ,
37
- CondFn : Fn ( & T ) -> bool ,
38
37
Arg : Clone ,
39
- Ret : FromIterator < T > ,
38
+ CondFn : Fn ( & T ) -> bool ,
39
+ Reader : Read + Seek ,
40
40
{
41
41
until_with ( cond, T :: read_options)
42
42
}
@@ -67,16 +67,16 @@ where
67
67
/// # let x: NullTerminated = x.read_be().unwrap();
68
68
/// # assert_eq!(x.data, &[[1, 2], [3, 4], [0, 0]]);
69
69
/// ```
70
- pub fn until_with < Reader , T , CondFn , Arg , ReadFn , Ret > (
70
+ pub fn until_with < Ret , T , Arg , CondFn , ReadFn , Reader > (
71
71
cond : CondFn ,
72
72
read : ReadFn ,
73
73
) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
74
74
where
75
- Reader : Read + Seek ,
76
- CondFn : Fn ( & T ) -> bool ,
75
+ Ret : FromIterator < T > ,
77
76
Arg : Clone ,
77
+ CondFn : Fn ( & T ) -> bool ,
78
78
ReadFn : Fn ( & mut Reader , Endian , Arg ) -> BinResult < T > ,
79
- Ret : FromIterator < T > ,
79
+ Reader : Read + Seek ,
80
80
{
81
81
move |reader, endian, args| {
82
82
let mut last = false ;
@@ -120,15 +120,15 @@ where
120
120
/// # let x: NullTerminated = x.read_be().unwrap();
121
121
/// # assert_eq!(x.data, &[1, 2, 3, 4]);
122
122
/// ```
123
- pub fn until_exclusive < Reader , T , CondFn , Arg , Ret > (
123
+ pub fn until_exclusive < Ret , T , Arg , CondFn , Reader > (
124
124
cond : CondFn ,
125
125
) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
126
126
where
127
+ Ret : FromIterator < T > ,
127
128
T : for < ' a > BinRead < Args < ' a > = Arg > ,
128
- Reader : Read + Seek ,
129
- CondFn : Fn ( & T ) -> bool ,
130
129
Arg : Clone ,
131
- Ret : FromIterator < T > ,
130
+ CondFn : Fn ( & T ) -> bool ,
131
+ Reader : Read + Seek ,
132
132
{
133
133
until_exclusive_with ( cond, T :: read_options)
134
134
}
@@ -159,16 +159,16 @@ where
159
159
/// # let x: NullTerminated = x.read_be().unwrap();
160
160
/// # assert_eq!(x.data, &[[1, 2], [3, 4]]);
161
161
/// ```
162
- pub fn until_exclusive_with < Reader , T , CondFn , Arg , ReadFn , Ret > (
162
+ pub fn until_exclusive_with < Ret , T , Arg , CondFn , ReadFn , Reader > (
163
163
cond : CondFn ,
164
164
read : ReadFn ,
165
165
) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
166
166
where
167
- Reader : Read + Seek ,
168
- CondFn : Fn ( & T ) -> bool ,
167
+ Ret : FromIterator < T > ,
169
168
Arg : Clone ,
169
+ CondFn : Fn ( & T ) -> bool ,
170
170
ReadFn : Fn ( & mut Reader , Endian , Arg ) -> BinResult < T > ,
171
- Ret : FromIterator < T > ,
171
+ Reader : Read + Seek ,
172
172
{
173
173
move |reader, endian, args| {
174
174
from_fn ( || match read ( reader, endian, args. clone ( ) ) {
@@ -211,16 +211,16 @@ where
211
211
/// # let x: EntireFile = x.read_be().unwrap();
212
212
/// # assert_eq!(x.data, &[1, 2, 3, 4]);
213
213
/// ```
214
- pub fn until_eof < Reader , T , Arg , Ret > (
214
+ pub fn until_eof < Ret , T , Arg , Reader > (
215
215
reader : & mut Reader ,
216
216
endian : Endian ,
217
217
args : Arg ,
218
218
) -> BinResult < Ret >
219
219
where
220
+ Ret : FromIterator < T > ,
220
221
T : for < ' a > BinRead < Args < ' a > = Arg > ,
221
- Reader : Read + Seek ,
222
222
Arg : Clone ,
223
- Ret : FromIterator < T > ,
223
+ Reader : Read + Seek ,
224
224
{
225
225
until_eof_with ( T :: read_options) ( reader, endian, args)
226
226
}
@@ -256,14 +256,14 @@ where
256
256
/// # let x: EntireFile = x.read_be().unwrap();
257
257
/// # assert_eq!(x.data, &[[1, 2], [3, 4]]);
258
258
/// ```
259
- pub fn until_eof_with < Reader , T , Arg , ReadFn , Ret > (
259
+ pub fn until_eof_with < Ret , T , Arg , ReadFn , Reader > (
260
260
read : ReadFn ,
261
261
) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
262
262
where
263
- Reader : Read + Seek ,
263
+ Ret : FromIterator < T > ,
264
264
Arg : Clone ,
265
265
ReadFn : Fn ( & mut Reader , Endian , Arg ) -> BinResult < T > ,
266
- Ret : FromIterator < T > ,
266
+ Reader : Read + Seek ,
267
267
{
268
268
move |reader, endian, args| {
269
269
from_fn ( || match read ( reader, endian, args. clone ( ) ) {
@@ -350,14 +350,14 @@ where
350
350
/// # let x = Object::read(&mut x).unwrap();
351
351
/// # assert_eq!(x.segments, &[vec![3], vec![4, 5]]);
352
352
/// ```
353
- pub fn args_iter < ' a , R , T , Arg , Ret , It > (
353
+ pub fn args_iter < ' a , Ret , T , Arg , It , Reader > (
354
354
it : It ,
355
- ) -> impl FnOnce ( & mut R , Endian , ( ) ) -> BinResult < Ret >
355
+ ) -> impl FnOnce ( & mut Reader , Endian , ( ) ) -> BinResult < Ret >
356
356
where
357
- T : BinRead < Args < ' a > = Arg > ,
358
- R : Read + Seek ,
359
357
Ret : FromIterator < T > ,
358
+ T : BinRead < Args < ' a > = Arg > ,
360
359
It : IntoIterator < Item = Arg > ,
360
+ Reader : Read + Seek ,
361
361
{
362
362
// For an unknown reason (possibly related to the note in the compiler error
363
363
// that says “due to current limitations in the borrow checker”), trying to
@@ -405,15 +405,15 @@ where
405
405
/// # let x = Object::read(&mut x).unwrap();
406
406
/// # assert_eq!(x.segments, &[vec![3], vec![4, 5]]);
407
407
/// ```
408
- pub fn args_iter_with < Reader , T , Arg , Ret , It , ReadFn > (
408
+ pub fn args_iter_with < Ret , T , Arg , It , ReadFn , Reader > (
409
409
it : It ,
410
410
read : ReadFn ,
411
411
) -> impl FnOnce ( & mut Reader , Endian , ( ) ) -> BinResult < Ret >
412
412
where
413
- Reader : Read + Seek ,
414
413
Ret : FromIterator < T > ,
415
414
It : IntoIterator < Item = Arg > ,
416
415
ReadFn : Fn ( & mut Reader , Endian , Arg ) -> BinResult < T > ,
416
+ Reader : Read + Seek ,
417
417
{
418
418
move |reader, options, ( ) | {
419
419
it. into_iter ( )
@@ -445,12 +445,14 @@ where
445
445
/// # let x: CountBytes = x.read_be().unwrap();
446
446
/// # assert_eq!(x.data, &[1, 2, 3]);
447
447
/// ```
448
- pub fn count < ' a , R , T , Arg , Ret > ( n : usize ) -> impl Fn ( & mut R , Endian , Arg ) -> BinResult < Ret >
448
+ pub fn count < ' a , Ret , T , Arg , Reader > (
449
+ n : usize ,
450
+ ) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
449
451
where
452
+ Ret : FromIterator < T > + ' static ,
450
453
T : BinRead < Args < ' a > = Arg > ,
451
- R : Read + Seek ,
452
454
Arg : Clone ,
453
- Ret : FromIterator < T > + ' static ,
455
+ Reader : Read + Seek ,
454
456
{
455
457
move |reader, endian, args| {
456
458
let mut container = core:: iter:: empty :: < T > ( ) . collect :: < Ret > ( ) ;
@@ -510,15 +512,15 @@ where
510
512
/// # let x: CountBytes = x.read_be().unwrap();
511
513
/// # assert_eq!(x.data, &[[1, 2], [3, 4]]);
512
514
/// ```
513
- pub fn count_with < R , T , Arg , ReadFn , Ret > (
515
+ pub fn count_with < Ret , T , Arg , ReadFn , Reader > (
514
516
n : usize ,
515
517
read : ReadFn ,
516
- ) -> impl Fn ( & mut R , Endian , Arg ) -> BinResult < Ret >
518
+ ) -> impl Fn ( & mut Reader , Endian , Arg ) -> BinResult < Ret >
517
519
where
518
- R : Read + Seek ,
519
- Arg : Clone ,
520
- ReadFn : Fn ( & mut R , Endian , Arg ) -> BinResult < T > ,
521
520
Ret : FromIterator < T > + ' static ,
521
+ Arg : Clone ,
522
+ ReadFn : Fn ( & mut Reader , Endian , Arg ) -> BinResult < T > ,
523
+ Reader : Read + Seek ,
522
524
{
523
525
move |reader, endian, args| {
524
526
core:: iter:: repeat_with ( || read ( reader, endian, args. clone ( ) ) )
0 commit comments