📝 docs: update README for bottom crates
parent
67975d9b11
commit
27b75fe424
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "always_equal"
|
name = "always_equal"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
authors = ["Trish"]
|
authors = ["Trish"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```
|
||||||
|
#[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:
|
||||||
|
|
||||||
|
```
|
||||||
|
use std::fs::File;
|
||||||
|
use always_equal::test::AlwaysEqual;
|
||||||
|
|
||||||
|
#[derive (Debug, PartialEq)]
|
||||||
|
pub struct MyStruct {
|
||||||
|
pub b: bool,
|
||||||
|
pub i: i64,
|
||||||
|
pub file: AlwaysEqual <File>,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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::<AlwaysEqual <T>> () == sizeof::<T>`
|
||||||
|
_should_ be true.
|
|
@ -0,0 +1,4 @@
|
||||||
|
# PTTH core
|
||||||
|
|
||||||
|
Common code used by both `ptth_relay` and `ptth_server`.
|
||||||
|
Most users will want to use those binary crates directly.
|
|
@ -1,6 +1,7 @@
|
||||||
//! # PTTH Core
|
//! # PTTH Core
|
||||||
//!
|
//!
|
||||||
//! Common code used by both `ptth_relay` and `ptth_server`.
|
//! Common code used by both `ptth_relay` and `ptth_server`.
|
||||||
|
//! Most users will want to use those binary crates directly.
|
||||||
|
|
||||||
#![warn (clippy::pedantic)]
|
#![warn (clippy::pedantic)]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue