Skip to content

Commit

Permalink
feat(macro_map): new optional exercise for rust piscine
Browse files Browse the repository at this point in the history
  • Loading branch information
mikysett committed Sep 25, 2023
1 parent efe4184 commit bbb8090
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions subjects/macro_map/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
## macro_map

### Instructions

Create a macro rule called `hash_map` to initialize and declare an `HashMap` at the same time, very similar to what `vec!` macro does for `Vector`.

> Your macro should accept both leading commas and non leading commas syntax to be more flexible in terms of coding style and reflect the language general style.
### Expected Macro

```rust
macro_rules! hash_map {
}
```

### Usage

Here is a possible program to test your function,

```rust
use macro_map::hash_map;
use std::collections::HashMap;

fn main() {
let empty: HashMap<u32, u32> = hash_map!();
let new = hash_map!('a' => 22, 'b' => 1, 'c' => 10);
let nested = hash_map!(
"first" => hash_map!(
"Rob" => 32.2,
"Gen" => 44.1,
"Chris" => 10.,
),
"second" => hash_map!()
);
println!("{:?}", empty);
println!("{:?}", new);
println!("{:?}", nested);
}
```

And its output:

```console
$ cargo run
{}
{'b': 1, 'a': 22, 'c': 10}
{"first": {"Rob": 32.2, "Gen": 44.1, "Chris": 10.0}, "second": {}}
$
```

0 comments on commit bbb8090

Please sign in to comment.