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"]); }