Macros 2
Now that we have an overview of how macros work, let's dive into another macro challenge. When implementing traits for multiple types, you often end up writing very similar code over and over.
In this challenge, you'll create a macro that generates implementations of a trait for multiple types. The goal is to reduce the amount of boilerplate code you need to write.
Your Task
-
Write a macro named
config_default_implthat:- Accepts a type and a default value as arguments.
- Generates the implementation of
ConfigDefaultfor that type.
-
Use the macro to implement the
ConfigDefaulttrait for the following types:ConnectionTimeoutwith a value of30.MaxConnectionswith a value of100.RetryAttemptswith a value of3.PostgresPortwith a value of5432.MySQLPortwith a value of3306.MongoPortwith a value of27017.RedisPortwith a value of6379.
Hints
If you're stuck, feel free to check out the hints below:
Click here to reveal hints
-
The syntax for a macro that accepts a type and a value is as follows:
rust macro_rules! config_default_impl { ($type:ty, $value:expr) => { // Implementation here }; }
No run yet
Press
Run to execute your code and see test results here.