@@ -239,3 +239,44 @@ fn works_with_option_type() {
239239 assert_eq ! ( s. pop( ) , Some ( None ) ) ;
240240 assert_eq ! ( s. pop( ) , Some ( Some ( 1 ) ) ) ;
241241}
242+
243+ // ── Iterator ─────────────────────────────────────────────────────────────────
244+
245+ #[ test]
246+ fn into_iter_lifo_order ( ) {
247+ let s = Stack :: from ( vec ! [ 1 , 2 , 3 ] ) ;
248+ let result: Vec < i32 > = s. into_iter ( ) . collect ( ) ;
249+ assert_eq ! ( result, vec![ 3 , 2 , 1 ] ) ;
250+ }
251+
252+ #[ test]
253+ fn into_iter_exact_size ( ) {
254+ let s = Stack :: from ( vec ! [ 1 , 2 , 3 ] ) ;
255+ let mut iter = s. into_iter ( ) ;
256+ assert_eq ! ( iter. len( ) , 3 ) ;
257+ iter. next ( ) ;
258+ assert_eq ! ( iter. len( ) , 2 ) ;
259+ }
260+
261+ #[ test]
262+ fn for_loop_lifo_order ( ) {
263+ let s = Stack :: from ( vec ! [ 1 , 2 , 3 ] ) ;
264+ let mut out = Vec :: new ( ) ;
265+ for x in s {
266+ out. push ( x) ;
267+ }
268+ assert_eq ! ( out, vec![ 3 , 2 , 1 ] ) ;
269+ }
270+
271+ #[ test]
272+ fn collect_into_stack ( ) {
273+ let s: Stack < i32 > = ( 1 ..=3 ) . collect ( ) ;
274+ assert_eq ! ( s. len( ) , 3 ) ;
275+ }
276+
277+ #[ test]
278+ fn into_iter_empty ( ) {
279+ let s: Stack < i32 > = Stack :: new ( ) ;
280+ let result: Vec < i32 > = s. into_iter ( ) . collect ( ) ;
281+ assert ! ( result. is_empty( ) ) ;
282+ }
0 commit comments