policy: Add section on standard set of derives

We can have a standard set of derives to make it easier for new devs to
work out what to use and also to help us move towards a uniform set in
preparation for crate stabilization. Mention the new `ordered` crate.
This commit is contained in:
Tobin C. Harding 2023-11-21 13:39:25 +11:00
parent ec1a5a25c7
commit cb42c74f58
No known key found for this signature in database
GPG Key ID: 40BF9E4C269D6607
1 changed files with 21 additions and 0 deletions

View File

@ -335,6 +335,27 @@ sure, feel free to ask. If we determine panicking is more practical it must be d
panics that could theoretically occur because of bugs in our code must not be documented. panics that could theoretically occur because of bugs in our code must not be documented.
#### Derives
We try to use standard set of derives if it makes sense:
```
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
enum Foo {
Bar,
Baz,
}
```
For types that do should not form a total or partial order, or that technically do but it does not
make sense to compare them, we use the `Ordered` trait from the
[`ordered`](https://crates.io/crates/ordered) crate. See `absolute::LockTime` for an example.
For error types you likely want to use `#[derive(Debug, Clone, PartialEq, Eq)]`.
See [Errors](#errors) section.
#### Attributes #### Attributes
- `#[track_caller]`: Used on functions that panic on invalid arguments - `#[track_caller]`: Used on functions that panic on invalid arguments