File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ mod into_buf;
24
24
mod iter;
25
25
mod reader;
26
26
mod take;
27
+ mod vec_deque;
27
28
mod writer;
28
29
29
30
pub use self :: buf:: Buf ;
Original file line number Diff line number Diff line change
1
+ use std:: collections:: VecDeque ;
2
+
3
+ use super :: Buf ;
4
+
5
+ impl Buf for VecDeque < u8 > {
6
+ fn remaining ( & self ) -> usize {
7
+ self . len ( )
8
+ }
9
+
10
+ fn bytes ( & self ) -> & [ u8 ] {
11
+ let ( s1, s2) = self . as_slices ( ) ;
12
+ if s1. is_empty ( ) {
13
+ s2
14
+ } else {
15
+ s1
16
+ }
17
+ }
18
+
19
+ fn advance ( & mut self , cnt : usize ) {
20
+ self . drain ( ..cnt) ;
21
+ }
22
+ }
23
+
24
+ #[ cfg( test) ]
25
+ mod tests {
26
+ use super :: * ;
27
+
28
+ #[ test]
29
+ fn hello_world ( ) {
30
+ let mut buffer: VecDeque < u8 > = VecDeque :: new ( ) ;
31
+ buffer. extend ( b"hello world" ) ;
32
+ assert_eq ! ( 11 , buffer. remaining( ) ) ;
33
+ assert_eq ! ( b"hello world" , buffer. bytes( ) ) ;
34
+ buffer. advance ( 6 ) ;
35
+ assert_eq ! ( b"world" , buffer. bytes( ) ) ;
36
+ buffer. extend ( b" piece" ) ;
37
+ assert_eq ! ( b"world piece" as & [ u8 ] , & buffer. collect:: <Vec <u8 >>( ) [ ..] ) ;
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments