@@ -637,6 +637,84 @@ mod tests {
637637 assert_len_cap_last ! ( stack, 2 , 4 , & 22 ) ;
638638 }
639639
640+ #[ test]
641+ fn as_slice ( ) {
642+ let mut stack = NonEmptyStack :: new ( 10u64 ) ;
643+ assert_len_cap_last ! ( stack, 1 , 4 , & 10 ) ;
644+ assert_eq ! ( stack. as_slice( ) , & [ 10 ] ) ;
645+
646+ stack. push ( 20 ) ;
647+ stack. push ( 30 ) ;
648+ stack. push ( 40 ) ;
649+ assert_len_cap_last ! ( stack, 4 , 4 , & 40 ) ;
650+ assert_eq ! ( stack. as_slice( ) , & [ 10 , 20 , 30 , 40 ] ) ;
651+
652+ stack. push ( 50 ) ;
653+ assert_len_cap_last ! ( stack, 5 , 8 , & 50 ) ;
654+ assert_eq ! ( stack. as_slice( ) , & [ 10 , 20 , 30 , 40 , 50 ] ) ;
655+
656+ stack. pop ( ) ;
657+ assert_len_cap_last ! ( stack, 4 , 8 , & 40 ) ;
658+ assert_eq ! ( stack. as_slice( ) , & [ 10 , 20 , 30 , 40 ] ) ;
659+
660+ stack. pop ( ) ;
661+ assert_len_cap_last ! ( stack, 3 , 8 , & 30 ) ;
662+ assert_eq ! ( stack. as_slice( ) , & [ 10 , 20 , 30 ] ) ;
663+
664+ stack. pop ( ) ;
665+ stack. pop ( ) ;
666+ assert_len_cap_last ! ( stack, 1 , 8 , & 10 ) ;
667+ assert_eq ! ( stack. as_slice( ) , & [ 10 ] ) ;
668+ }
669+
670+ #[ test]
671+ fn as_mut_slice ( ) {
672+ let mut stack = NonEmptyStack :: new ( 10u64 ) ;
673+ assert_len_cap_last ! ( stack, 1 , 4 , & 10 ) ;
674+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 10 ] ) ;
675+
676+ stack. as_mut_slice ( ) [ 0 ] = 11 ;
677+ assert_len_cap_last ! ( stack, 1 , 4 , & 11 ) ;
678+ assert_eq ! ( & stack[ ..] , & [ 11 ] ) ;
679+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 ] ) ;
680+
681+ stack. push ( 20 ) ;
682+ stack. push ( 30 ) ;
683+ stack. push ( 40 ) ;
684+ assert_len_cap_last ! ( stack, 4 , 4 , & 40 ) ;
685+ assert_eq ! ( & stack[ ..] , & [ 11 , 20 , 30 , 40 ] ) ;
686+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 , 20 , 30 , 40 ] ) ;
687+
688+ stack. as_mut_slice ( ) [ 2 ] = 31 ;
689+ assert_len_cap_last ! ( stack, 4 , 4 , & 40 ) ;
690+ assert_eq ! ( & stack[ ..] , & [ 11 , 20 , 31 , 40 ] ) ;
691+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 , 20 , 31 , 40 ] ) ;
692+
693+ stack. push ( 50 ) ;
694+ assert_len_cap_last ! ( stack, 5 , 8 , & 50 ) ;
695+ assert_eq ! ( & stack[ ..] , & [ 11 , 20 , 31 , 40 , 50 ] ) ;
696+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 , 20 , 31 , 40 , 50 ] ) ;
697+
698+ stack. pop ( ) ;
699+ assert_len_cap_last ! ( stack, 4 , 8 , & 40 ) ;
700+ assert_eq ! ( & stack[ ..] , & [ 11 , 20 , 31 , 40 ] ) ;
701+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 , 20 , 31 , 40 ] ) ;
702+
703+ stack. pop ( ) ;
704+ assert_len_cap_last ! ( stack, 3 , 8 , & 31 ) ;
705+ assert_eq ! ( & stack[ ..] , & [ 11 , 20 , 31 ] ) ;
706+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 , 20 , 31 ] ) ;
707+
708+ stack. pop ( ) ;
709+ stack. pop ( ) ;
710+ assert_len_cap_last ! ( stack, 1 , 8 , & 11 ) ;
711+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 11 ] ) ;
712+
713+ stack. as_mut_slice ( ) [ 0 ] = 12 ;
714+ assert_len_cap_last ! ( stack, 1 , 8 , & 12 ) ;
715+ assert_eq ! ( stack. as_mut_slice( ) , & mut [ 12 ] ) ;
716+ }
717+
640718 #[ test]
641719 #[ expect( clippy:: items_after_statements) ]
642720 fn drop ( ) {
0 commit comments