mirror of
https://github.com/mfocko/blog.git
synced 2024-11-22 13:03:47 +01:00
blog(aoc-2022): fix footnotes in 3rd week
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
5cfa9bd729
commit
e48a048409
1 changed files with 6 additions and 11 deletions
|
@ -443,7 +443,7 @@ though :) Let's go through the details.
|
||||||
#### `Default` trait
|
#### `Default` trait
|
||||||
|
|
||||||
For the first time and twice I had a need to have a default value for my types,
|
For the first time and twice I had a need to have a default value for my types,
|
||||||
enumerations in this case. Rust offers a very nice trait[^4] that is described
|
enumerations in this case. Rust offers a very nice trait[^1] that is described
|
||||||
as:
|
as:
|
||||||
|
|
||||||
> A trait for giving a type a useful default value.
|
> A trait for giving a type a useful default value.
|
||||||
|
@ -451,7 +451,7 @@ as:
|
||||||
I guess it sums it up nicely. The more interesting part about this is the fact
|
I guess it sums it up nicely. The more interesting part about this is the fact
|
||||||
that you can use the _macro machinery_ to save yourself some typing. If you have
|
that you can use the _macro machinery_ to save yourself some typing. If you have
|
||||||
enumeration of which the default value doesn't bear any parameter, you can just
|
enumeration of which the default value doesn't bear any parameter, you can just
|
||||||
do[^5]:
|
do[^2]:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
|
@ -466,18 +466,13 @@ enum Color {
|
||||||
#### Abusing negation
|
#### Abusing negation
|
||||||
|
|
||||||
If you want to use a _unary minus_ operator on your own type, you can implement
|
If you want to use a _unary minus_ operator on your own type, you can implement
|
||||||
a `Neg` trait[^6]. I was dealing with a binary tree and needed a way how to look
|
a `Neg` trait[^3]. I was dealing with a binary tree and needed a way how to look
|
||||||
at the other side, so I have just implemented the negation for flipping between
|
at the other side, so I have just implemented the negation for flipping between
|
||||||
left and right :smile:
|
left and right :smile:
|
||||||
|
|
||||||
[^1]: Copy-pasting might be a relaxing thing to do, but you can also discover
|
[^1]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs
|
||||||
nasty stuff about your PC. See [this Reddit post and the comment].
|
[^2]: Pardon my example from the graph algorithms ;)
|
||||||
[^2]: [GitHub profile](https://github.com/martinjonas)
|
[^3]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs
|
||||||
[^3]: Even though you can use it even for libraries, but handling errors from
|
|
||||||
libraries using `anyhow` is nasty… You will be the stinky one ;)
|
|
||||||
[^4]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs
|
|
||||||
[^5]: Pardon my example from the graph algorithms ;)
|
|
||||||
[^6]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs
|
|
||||||
|
|
||||||
[_Advent of Code_]: https://adventofcode.com
|
[_Advent of Code_]: https://adventofcode.com
|
||||||
[`itertools`]: https://crates.io/crates/itertools
|
[`itertools`]: https://crates.io/crates/itertools
|
||||||
|
|
Loading…
Reference in a new issue