Using the given code create the following **functions**:
Using the given code, create the following **associated functions**:
- `new` which will initialize the `WorkEnvironment` as `None`
- `new`: which will initialize the `WorkEnvironment` with `grade` set to `None`.
- `add_worker`, which receives two strings, one being the type of worker and the other the name of the worker.
- `add_worker`: which receives two strings, one being the type of worker and the other the name of the worker.
- `remove_worker`, which removes the last worker that was placed in the `WorkEnvironment`, this function should
- `remove_worker`: which removes the last worker that was placed in the `WorkEnvironment`, this function returns an `Option` with the name of the worker.
returns an `Option` with the name of the worker.
- `search_worker`: which returns a tuple with the name and type of worker.
- `search_worker`, which returns a tuple with the name and type of worker.
You must also create a type called `Link`. This will be the connection of the structures `WorkEnvironment` and `Worker`.
You must also create a type named `Link`. This will be the connection between the `WorkEnvironment` and `Worker` structures. This will be a recursion type, and it must point to `None` if there is no `Worker` to point to.
Do not forget that this will be a recursion type and it must point to `None` if there is no workers.