Using the given code, create the following **associated functions**:
- `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 role and the other the name of the worker. It will add the worker at the start of the list.
- `remove_worker`: which removes the last worker that was placed in the `WorkEnvironment`, this function returns an `Option` with the name of the worker.
- `search_worker`: which returns a tuple with the name and type of worker.
- `last_worker`: which returns an `Option` with a tuple containing the name and role of the last added 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.