fn split_for( v:Vec<u8> ) -> Vec<Vec<u8>> { let mut rt:Vec<Vec<u8>> = vec![]; let mut tmp:Vec<u8> = vec![]; for i in v { if i == 0 { rt.push( tmp ); tmp = vec![]; } else { tmp.push( i ); } } if tmp.len() != 0 { rt.push( tmp ); } rt } fn split_pat( v:Vec<u8> ) -> Vec<Vec<u8>> { let b = v.split( |s| *s == 0 ); b.into_iter().map( |s| s.into_iter().map( |v| (*v).clone() ).collect() ).collect() } fn main() { let a:Vec<u8> = vec![1,1, 0 ,2,2, 0 ,3,3]; println!("{:?}", split_for( a.clone() ) ); println!("{:?}", split_pat( a.clone() ) ); }



Standard Error Compiling playground v0.0.1 (/playground) Finished dev [unoptimized + debuginfo] target(s) in 0.61s Running `target/debug/playground`
Standard Output[[1, 1], [2, 2], [3, 3]] [[1, 1], [2, 2], [3, 3]]




for 만 존나게 쓰다가 이제 pattern 에 익숙해지니까 좋긴한데


문제는 다른 팀원들이 못알아먹겠다고 걍 for 문 쓰자고 함;






>> clippy 로 줄여봄


fn split_for( v:Vec<u8> ) -> Vec<Vec<u8>> { let mut rt:Vec<Vec<u8>> = vec![]; let mut tmp:Vec<u8> = vec![]; for i in v { if i == 0 { rt.push( tmp ); tmp = vec![]; } else { tmp.push( i ); } } if !tmp.is_empty() { rt.push( tmp ); } rt } fn split_pat( v:Vec<u8> ) -> Vec<Vec<u8>> { v.split( |s| *s == 0 ) .map( |s| s.iter().copied().collect() ).collect() } fn main() { let a:Vec<u8> = vec![1,1, 0 ,2,2, 0 ,3,3]; println!("{:?}", split_for( a.clone() ) ); println!("{:?}", split_pat( a.clone() ) ); }