use see_through::{see_derive::Look, Look, See}; #[derive(Look)] struct Card { name: String, number: T, } #[derive(Look)] struct Shoe { brand: T, number: i32, } fn change_i32_number(mut var: T, by: i32) -> T where T: Look, { var[see_t::NUMBER] += by; var } fn main() { let shoe = Shoe { brand: "my", number: 2, }; let card = Card { name: "dev".to_string(), number: "2", }; let card = change_i32_number(card, 2); // <-- This won't work let shoe = change_i32_number(shoe, 2); } see_derive::auto_load!();