Skip to content

Commit

Permalink
docs: fix README.md doctests
Browse files Browse the repository at this point in the history
  • Loading branch information
MingweiSamuel committed Sep 12, 2024
1 parent e86f0ee commit c55f80d
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
`matchbox::match_deref!{...}` is a procedural macro, which allows you to use deref patterns right now in stable Rust.

For example:
```rust
```rust,no_run
use std::rc::Rc;
enum Value {
Expand Down Expand Up @@ -33,24 +33,30 @@ I. e. it is possible that your arms are exhaustive, but the compiler will not be
The macro calls `Deref::deref` internally. Keep in mind that `Deref::deref` takes REFERENCE to smart pointer and returns REFERENCE to pointee. So this code will work: `match &Nil { Deref @ x => ... }`, but this will not: `match Nil { Deref @ x => ... }`.

Consider this code:
```rust
```rust,ignore
matchbox::match_deref!{
match v {
Symbol(Deref @ x) => some_code_here,
_ => other_code_here,
Symbol(Deref @ x) => {
// some_code_here
}
_ => {
// other_code_here,
}
}
}
```

It will be desugared to something like this:
```rust
```rust,ignore
match v {
Symbol(a0) if (if let x = Deref::deref(a0) { true } else { false }) => if let x = Deref::deref(a0) {
some_code_here
// some_code_here
} else {
panic!()
},
_ => other_code_here,
}
_ => {
// other_code_here
}
}
```

Expand Down

0 comments on commit c55f80d

Please sign in to comment.