rust iter 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | use std::ptr; use std::fmt::{ Display, Formatter, Result }; pub struct Node { value: i32, next : * mut Node } impl Node { pub fn new(val: i32) - > Self { Node { value: val, next : ptr::null_mut(), } } } pub struct List { head: * mut Node } impl List { pub fn new() - > Self { List { head: ptr::null_mut() } } pub fn add(&mut self , value: i32) { if self .head = = ptr::null_mut() { self .head = &mut Node::new(value); return () } let mut _ptr1 = self .head; / / let mut _ptr3 = ptr::null_mut(); / / self .head = _ptr3; unsafe { while ( * _ptr1). next ! = ptr::null_mut() { _ptr1 = ( * _ptr1). next ; } } let mut _ptr2 = ptr::null_mut(); _ptr2 = &mut Node::new(value); unsafe { if ( * _ptr1). next = = ptr::null_mut() { ( * _ptr1). next = _ptr2; } } } } impl Display for List { fn fmt(& self , f: &mut Formatter) - > Result { write!(f, "List: {}" , self ) } } impl IntoIterator for List { type Item = i32; type IntoIter = ListIntoIterator; fn into_iter( self ) - > Self::IntoIter { ListIntoIterator { list : self } } } pub struct ListIntoIterator { list : List , } impl Iterator for ListIntoIterator { type Item = i32; fn next (&mut self ) - > Option<i32> { let mut start = self . list .head; unsafe { if ( * start). next ! = ptr::null_mut() { start = ( * start). next ; } return Some(( * start).value); } } } fn main() { let mut list1 = List ::new(); list1.add( 3 ); list1.add( 6 ); / / let mut list2 = List ::new(); for _i in list1.into_iter() { println!( "{:?}" , &_i); / / for j in _i.into_iter() { / / println!( "{}" , j); / / } }; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下