diff --git a/reference/exercise-concepts/macros.md b/reference/exercise-concepts/macros.md new file mode 100644 index 000000000..7a2e5277b --- /dev/null +++ b/reference/exercise-concepts/macros.md @@ -0,0 +1,31 @@ +# Concepts Required for the Macros exercise + +There are many ways to potentially solve an exercise, but I'll be looking at the [canonical example](https://github.com/exercism/rust/blob/666c366fc0d39d9f6fd8e837facea8afe2153ae2/exercises/macros/example.rs) as my primary reference for what concepts are used. + +When referring to the list of concepts, we mean [this list](https://github.com/exercism/v3/blob/master/languages/rust/reference/README.md) + +Note that for both concept and practice exercises, the list of prerequisite concepts should be as small as possible. The goal here is not to enumerate all concepts which may be used in all possible approaches to the problem; it is to enumerate the minimal set of knowledge with which a determined student could conceivably solve the problem. + +Note that this exercise is very likely to become a concept exercise for the concept "Writing declarative macros". + +## Required concepts +### Existing + +- structs +- (im)mutability +- `Hashmap` + +### Should be added + +- variable assignment (part of `fundamentals`) +- variable scope / namespacing (part of `fundamentals`) +- methods and associated functions (depends on `structs`) + +## Optional Concepts +### Existing + +_none_ + +### Should be added + +_none_