mirror of https://github.com/01-edu/public.git
Augusto
4 years ago
1 changed files with 92 additions and 0 deletions
@ -0,0 +1,92 @@
|
||||
## blood_types_s |
||||
|
||||
### Instructions |
||||
|
||||
Use the following table to define the methods asked: |
||||
|
||||
| Blood Types | Donate Blood to | Receive Blood From | |
||||
|-------------|------------------|--------------------| |
||||
| A+ | A+, AB+ | A+, A-, O+, O- | |
||||
| O+ | O+, A+, B+, AB+ | O+, O- | |
||||
| B+ | O+, O- | B+, B-, O+, O- | |
||||
| AB+ | AB+ | Everyone | |
||||
| A- | A+, A-, AB+, AB- | A-, O- | |
||||
| O- | Everyone | O- | |
||||
| B- | B+, B-, AB+, AB- | B-, O- | |
||||
| AB- | AB+, AB- | AB-, A-, B-, O- | |
||||
|
||||
Write three methods for BloodType: |
||||
|
||||
- `can_receive_from`: which returns true if `self` can receive blood from `other` blood type |
||||
- `donors`: which returns all the blood types that can give blood to `self` |
||||
- `recipients`: which returns all the blood types that can receive blood from `self` |
||||
|
||||
### Expected Functions and Structures |
||||
|
||||
```rust |
||||
#[derive(Debug, PartialEq, Eq, Clone, PartialOrd, Ord)] |
||||
pub enum Antigen { |
||||
A, |
||||
AB, |
||||
B, |
||||
O, |
||||
} |
||||
|
||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)] |
||||
enum RhFactor { |
||||
Positive, |
||||
Negative, |
||||
} |
||||
|
||||
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone)] |
||||
pub struct BloodType { |
||||
pub antigen: Antigen, |
||||
pub rh_factor: RhFactor, |
||||
} |
||||
|
||||
impl BloodType { |
||||
pub fn can_receive_from(&self, other: &Self) -> bool { |
||||
} |
||||
|
||||
pub fn donors(&self) -> Vec<Self> { |
||||
} |
||||
|
||||
pub fn recipients(&self) -> Vec<Self> { |
||||
} |
||||
``` |
||||
|
||||
### Usage |
||||
|
||||
Here is a program to test your function. |
||||
|
||||
```rust |
||||
use blood_types_s::{Antigen, BloodType, RhFactor}; |
||||
|
||||
fn main() { |
||||
let blood_type = BloodType { |
||||
antigen: Antigen::O, |
||||
rh_factor: RhFactor::Positive, |
||||
}; |
||||
println!("recipients of O+ {:?}", blood_type.recipients()); |
||||
println!("donors of O+ {:?}", blood_type.donors()); |
||||
let another_blood_type = BloodType { |
||||
antigen: Antigen::O, |
||||
rh_factor: RhFactor::Positive, |
||||
}; |
||||
println!( |
||||
"donors of O+ can receive from {:?} {:?}", |
||||
&another_blood_type, |
||||
blood_type.can_receive_from(&another_blood_type) |
||||
); |
||||
} |
||||
``` |
||||
|
||||
And its output |
||||
|
||||
```console |
||||
student@ubuntu:~/[[ROOT]]/test$ cargo run |
||||
recipients of O+ [BloodType { antigen: AB, rh_factor: Positive }, BloodType { antigen: O, rh_factor: Positive }, BloodType { antigen: A, rh_factor: Positive }, BloodType { antigen: B, rh_factor: Positive }] |
||||
donors of O+ [BloodType { antigen: O, rh_factor: Positive }, BloodType { antigen: O, rh_factor: Negative }] |
||||
donors of O+ can receive from BloodType { antigen: O, rh_factor: Positive } true |
||||
student@ubuntu:~/[[ROOT]]/test$ |
||||
``` |
Loading…
Reference in new issue