# Always-Equal Always-Equal lets you wrap `PartialEq` implementations around things that cannot be compared, like a `File`. To use Always-Equal, put these two conditional `use` statements in your module: ```rust #[cfg (test)] use always_equal::test::AlwaysEqual; #[cfg (not (test))] use always_equal::prod::AlwaysEqual; ``` Then wrap `AlwaysEqual` around anything that needs PartialEq but can't possibly implement it: ```rust use std::fs::File; use always_equal::test::AlwaysEqual; #[derive (Debug, PartialEq)] pub struct MyStruct { pub b: bool, pub i: i64, pub file: AlwaysEqual , } // In test code, you can create an empty wrapper using // `testing_blank`, which is equal to any other wrapper: let expected = MyStruct { b: true, i: 0, file: AlwaysEqual::testing_blank (), }; # let my_file = File::open ("Cargo.toml").unwrap (); let actual = MyStruct { b: true, i: 0, file: my_file.into (), }; assert_eq! (expected, actual); ``` This is implemented with `Option` in test mode. In production mode, wrappers are never equal to any other wrapper, and the `Option` is removed so that `sizeof::> () == sizeof::` _should_ be true.