//! Tests that auto-dereferencing does not allow addition of `Box` values. //! //! This test ensures that `Box` fields in structs (`Clam` and `Fish`) are not //! automatically dereferenced to `isize` during addition operations, as `Box` //! does not implement the `Add` trait. struct Clam { x: Box, y: Box, } struct Fish { a: Box, } fn main() { let a: Clam = Clam { x: Box::new(1), y: Box::new(2), }; let b: Clam = Clam { x: Box::new(10), y: Box::new(20), }; let z: isize = a.x + b.y; //~^ ERROR cannot add `Box` to `Box` println!("{}", z); assert_eq!(z, 21); let forty: Fish = Fish { a: Box::new(40) }; let two: Fish = Fish { a: Box::new(2) }; let answer: isize = forty.a + two.a; //~^ ERROR cannot add `Box` to `Box` println!("{}", answer); assert_eq!(answer, 42); }