mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Chris
486b917663
|
4 years ago | |
---|---|---|
.. | ||
README.md | 4 years ago |
README.md
box_recursion
Instructions
Using the given code create the following functions:
new
which will initialize theWorkEnvironment
asNone
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 theWorkEnvironment
, this function should returns anOption
with the name of the 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
.
Do not forget that this will be a recursion type and it must point to None
if there is no workers.
Notions
Expected Functions and structures
pub struct WorkEnvironment {
pub grade: Link,
}
pub type Link =
pub struct Worker {
pub worker_type: String,
pub worker_name: String,
pub next_worker: Link,
}
impl WorkEnvironment {
pub fn new() -> WorkEnvironment {}
pub fn add_worker(&mut self, t: String, name: String) {}
pub fn remove_worker(&mut self) -> Option<String> {}
pub fn search_worker(&self) -> Option<(String, String)> {}
}
Usage
Here is a program to test your function,
use box_recursion::*;
fn main() {
let mut list = WorkEnvironment::new();
list.add_worker(String::from("CEO"), String::from("Marie"));
list.add_worker(String::from("Manager"), String::from("Monica"));
list.add_worker(String::from("Normal Worker"), String::from("Ana"));
list.add_worker(String::from("Normal Worker"), String::from("Alice"));
println!("{:?}", list);
println!("{:?}", list.search_worker());
list.remove_worker();
list.remove_worker();
list.remove_worker();
list.remove_worker();
println!("{:?}", list);
}
And its output:
student@ubuntu:~/[[ROOT]]/test$ cargo run
WorkEnvironment { grade: Some(Worker { worker_type: "Normal Worker", worker_name: "Alice", next_worker: Some(Worker { worker_type: "Normal Worker", worker_name: "Ana", next_worker: Some(Worker { worker_type: "Manager", worker_name: "Monica", next_worker: Some(Worker { worker_type: "CEO", worker_name: "Marie", next_worker: None }) }) }) }) }
Some(("Alice", "Normal Worker"))
WorkEnvironment { grade: None }
student@ubuntu:~/[[ROOT]]/test$