rust index
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 | use std::collections::HashMap; use std::ops::Index; #[derive(Debug,Clone)] struct Cell{ name:String } type Col = HashMap<String, Vec<Cell>>; #[derive(Debug,Clone)] struct DF{ columns: Vec<Col> } impl Index<& str > for DF{ type Output = i32; fn index(& self , c:& str ) - >&i32 { println!( "索引字符是: {}" , &c); & 2_i32 } } fn main() { let mut a = HashMap::new(); a.insert(String:: from ( "A" ), vec![Cell{name:String:: from ( "A1" )}, Cell{name:String:: from ( "A2" )}]); let mut b = HashMap::new(); b.insert(String:: from ( "B" ), vec![Cell{name:String:: from ( "B1" )}, Cell{name:String:: from ( "B2" )}]); let df = DF{ columns:vec![a, b]}; println!( "{:?}" , df[ "C" ]); } |