📝 docs: update README for bottom crates

main
_ 2021-04-18 12:37:37 -05:00
parent 67975d9b11
commit 27b75fe424
4 changed files with 60 additions and 1 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "always_equal"
version = "1.0.0"
version = "1.0.1"
authors = ["Trish"]
edition = "2018"
license = "AGPL-3.0"

View File

@ -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.

View File

@ -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.

View File

@ -1,6 +1,7 @@
//! # PTTH Core
//!
//! Common code used by both `ptth_relay` and `ptth_server`.
//! Most users will want to use those binary crates directly.
#![warn (clippy::pedantic)]