File tree Expand file tree Collapse file tree 1 file changed +16
-5
lines changed
commons/zenoh-buffers/src Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -101,11 +101,22 @@ pub mod buffer {
101
101
let mut slices = self . slices ( ) ;
102
102
match slices. len ( ) {
103
103
0 => Cow :: Borrowed ( b"" ) ,
104
- 1 => Cow :: Borrowed ( slices. next ( ) . unwrap ( ) ) ,
105
- _ => Cow :: Owned ( slices. fold ( Vec :: new ( ) , |mut acc, it| {
106
- acc. extend ( it) ;
107
- acc
108
- } ) ) ,
104
+ 1 => {
105
+ // SAFETY: unwrap here is safe because we have explicitly checked
106
+ // the iterator has 1 element.
107
+ Cow :: Borrowed ( unsafe { slices. next ( ) . unwrap_unchecked ( ) } )
108
+ }
109
+ _ => {
110
+ let mut l = 0 ;
111
+ for s in slices. by_ref ( ) {
112
+ l += s. len ( ) ;
113
+ }
114
+ let mut vec = Vec :: with_capacity ( l) ;
115
+ for slice in slices {
116
+ vec. extend_from_slice ( slice) ;
117
+ }
118
+ Cow :: Owned ( vec)
119
+ }
109
120
}
110
121
}
111
122
}
You can’t perform that action at this time.
0 commit comments