| #![allow(unused_assignments)] |
| //@ failure-status: 1 |
| |
| struct Firework<T: Copy + std::fmt::Display> { |
| strength: T, |
| } |
| |
| impl<T: Copy + std::fmt::Display> Firework<T> { |
| #[inline(always)] |
| fn set_strength(&mut self, new_strength: T) { |
| self.strength = new_strength; |
| } |
| } |
| |
| impl<T: Copy + std::fmt::Display> Drop for Firework<T> { |
| #[inline(always)] |
| fn drop(&mut self) { |
| println!("BOOM times {}!!!", self.strength); |
| } |
| } |
| |
| fn main() -> Result<(), u8> { |
| let mut firecracker = Firework { strength: 1 }; |
| firecracker.set_strength(2); |
| |
| let mut tnt = Firework { strength: 100.1 }; |
| tnt.set_strength(200.1); |
| tnt.set_strength(300.3); |
| |
| if true { |
| println!("Exiting with error..."); |
| return Err(1); |
| } |
| |
| let _ = Firework { strength: 1000 }; |
| |
| Ok(()) |
| } |
| |
| // Expected program output: |
| // Exiting with error... |
| // BOOM times 100!!! |
| // BOOM times 1!!! |
| // Error: 1 |