@@ -164,14 +164,6 @@ impl From<bytes::Bytes> for BufView {
164
164
}
165
165
}
166
166
167
- /// BufMutViewWhole is equivalent to `BufMutView`, but cannot be split, preventing
168
- /// someone from accidentally holding a `BufView` down the road that is being actively
169
- /// mutated from JavaScript.
170
- pub struct BufMutViewWhole {
171
- inner : BufMutViewInner ,
172
- cursor : usize ,
173
- }
174
-
175
167
/// BufMutView is a wrapper around an underlying contiguous chunk of writable
176
168
/// bytes. It can be created from a `JsBuffer` or a `Vec<u8>` and implements
177
169
/// `DerefMut<[u8]>` and `AsMut<[u8]>`.
@@ -419,124 +411,6 @@ impl From<BytesMut> for BufMutView {
419
411
}
420
412
}
421
413
422
- impl BufMutViewWhole {
423
- fn from_inner ( inner : BufMutViewInner ) -> Self {
424
- Self { inner, cursor : 0 }
425
- }
426
-
427
- pub fn new ( len : usize ) -> Self {
428
- let bytes = BytesMut :: zeroed ( len) ;
429
- Self :: from_inner ( BufMutViewInner :: Bytes ( bytes) )
430
- }
431
-
432
- /// Get the length of the buffer view. This is the length of the underlying
433
- /// buffer minus the cursor position.
434
- pub fn len ( & self ) -> usize {
435
- match & self . inner {
436
- BufMutViewInner :: JsBuffer ( js_buf) => js_buf. len ( ) - self . cursor ,
437
- BufMutViewInner :: Bytes ( bytes) => bytes. len ( ) - self . cursor ,
438
- }
439
- }
440
-
441
- /// Is the buffer view empty?
442
- pub fn is_empty ( & self ) -> bool {
443
- self . len ( ) == 0
444
- }
445
-
446
- /// Advance the internal cursor of the buffer view by `n` bytes.
447
- pub fn advance_cursor ( & mut self , n : usize ) {
448
- assert ! ( self . len( ) >= n) ;
449
- self . cursor += n;
450
- }
451
-
452
- /// Reset the internal cursor of the buffer view to the beginning of the
453
- /// buffer. Returns the old cursor position.
454
- pub fn reset_cursor ( & mut self ) -> usize {
455
- let old = self . cursor ;
456
- self . cursor = 0 ;
457
- old
458
- }
459
-
460
- /// Turn this `BufMutView` into a `BufView`.
461
- pub fn into_view ( self ) -> BufView {
462
- let inner = match self . inner {
463
- BufMutViewInner :: JsBuffer ( js_buf) => BufViewInner :: JsBuffer ( js_buf) ,
464
- BufMutViewInner :: Bytes ( bytes) => BufViewInner :: Bytes ( bytes. into ( ) ) ,
465
- } ;
466
- BufView {
467
- inner,
468
- cursor : self . cursor ,
469
- }
470
- }
471
-
472
- /// Attempts to unwrap the underlying buffer into a [`BytesMut`], consuming the `BufMutView`. If
473
- /// this buffer does not have a [`BytesMut`], returns `Self`.
474
- pub fn maybe_unwrap_bytes ( self ) -> Result < BytesMut , Self > {
475
- match self . inner {
476
- BufMutViewInner :: JsBuffer ( _) => Err ( self ) ,
477
- BufMutViewInner :: Bytes ( bytes) => Ok ( bytes) ,
478
- }
479
- }
480
-
481
- /// Adjust the length of the remaining buffer and ensure that the cursor continues to
482
- /// stay in-bounds.
483
- pub fn truncate ( & mut self , size : usize ) {
484
- match & mut self . inner {
485
- BufMutViewInner :: Bytes ( bytes) => bytes. truncate ( size + self . cursor ) ,
486
- BufMutViewInner :: JsBuffer ( buffer) => buffer. truncate ( size + self . cursor ) ,
487
- }
488
- self . cursor = std:: cmp:: min ( self . cursor , self . len ( ) ) ;
489
- }
490
- }
491
-
492
- impl Buf for BufMutViewWhole {
493
- fn remaining ( & self ) -> usize {
494
- self . len ( )
495
- }
496
-
497
- fn chunk ( & self ) -> & [ u8 ] {
498
- self . deref ( )
499
- }
500
-
501
- fn advance ( & mut self , cnt : usize ) {
502
- self . advance_cursor ( cnt)
503
- }
504
- }
505
-
506
- impl Deref for BufMutViewWhole {
507
- type Target = [ u8 ] ;
508
-
509
- fn deref ( & self ) -> & [ u8 ] {
510
- let buf = match & self . inner {
511
- BufMutViewInner :: JsBuffer ( js_buf) => js_buf. deref ( ) ,
512
- BufMutViewInner :: Bytes ( vec) => vec. deref ( ) ,
513
- } ;
514
- & buf[ self . cursor ..]
515
- }
516
- }
517
-
518
- impl DerefMut for BufMutViewWhole {
519
- fn deref_mut ( & mut self ) -> & mut [ u8 ] {
520
- let buf = match & mut self . inner {
521
- BufMutViewInner :: JsBuffer ( js_buf) => js_buf. deref_mut ( ) ,
522
- BufMutViewInner :: Bytes ( vec) => vec. deref_mut ( ) ,
523
- } ;
524
- & mut buf[ self . cursor ..]
525
- }
526
- }
527
-
528
- impl From < JsBuffer > for BufMutViewWhole {
529
- fn from ( buf : JsBuffer ) -> Self {
530
- Self :: from_inner ( BufMutViewInner :: JsBuffer ( buf. into_parts ( ) ) )
531
- }
532
- }
533
-
534
- impl From < BytesMut > for BufMutViewWhole {
535
- fn from ( buf : BytesMut ) -> Self {
536
- Self :: from_inner ( BufMutViewInner :: Bytes ( buf) )
537
- }
538
- }
539
-
540
414
#[ cfg( test) ]
541
415
mod tests {
542
416
use super :: * ;
0 commit comments