Santa burst into the dev lounge, chugging his third espresso. "Great job yesterday, nerds! The is_nice
function? Chef's kiss. But now, I want structure. STRUCTURE! We’re going full-on Rustacean. I need a Kid
struct—immediately!"
The elves nodded enthusiastically, their tiny laptops open, running Arch Linux with bspwm because, obviously, they were that kind of devs. One elf, started yapping, "But Santa, why a struct? Isn’t this just overengineered?"
Santa slammed the table, shaking an untouched tray of gluten-free cookies. "No! A struct means no more random strings floating around. We need to encapsulate a kid's data—name, and niceness score. Plus, we’ll need some methods to make sense of it all."
The dev elves scrambled to work. In no time, they sketched out the basic blueprint. Santa glanced at the screen. "Not bad. But I will need this extended later. Keep it modular, bros!"
The room fell silent as the elves realized the implications. This was just the beginning of Santa’s unhinged data modeling spree.
The elves need your help to finish the Kid
struct.
Here is what you need to do:
Niceness
enum: Nice
and Naughty
. Nice
takes the number of good deeds.Kid
struct: name
of type String
and niceness
of type Niceness
.is_nice
function we created on Day 3 to an associated function of the Kid
struct.new()
associated function for the Kid
struct.If you're stuck, here are some hints to help you get back on track:
Nice(u32)
to represent the number of good deeds.field_name: field_type
, e.g., name: String
.impl
block without the self
parameter.::
instead of .
, e.g. Kid::is_nice(10, 1);
Self::is_nice
or Kid::is_nice
to call the associated function from within the impl
block.pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { // Return a Kid instance match Self::is_nice(good_deeds, bad_deeds) { true => Self { name: name, niceness: Niceness::Nice(good_deeds), }, false => Self { name: name, niceness: Niceness::Naughty, }, } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice (u32), Naughty // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds}pub struct Kid { pub name: String, pub niceness: Niceness}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { Kid { name, niceness: match is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty } } }}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty, }impl Kid { pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> Niceness { if good_deeds == 0 && bad_deeds == 0 { return Niceness::Naughty; } let good_deedsf = good_deeds as f32 * GOOD_WEIGHT; let bad_deedsf = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deedsf / (good_deedsf + bad_deedsf); if ratio >= 0.75 { return Niceness::Nice(good_deeds); } Niceness::Naughty } pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { Kid { name, niceness: Kid::is_nice(good_deeds, bad_deeds), } }}pub struct Kid { pub name: String, pub niceness: Niceness,}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = match Kid::is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty }; Kid { name: name, niceness: niceness } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty}pub struct Kid { pub name : String, pub niceness : Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { Self { name: name, niceness: if Self::is_nice(good_deeds, bad_deeds) == true { Niceness::Nice(good_deeds) } else { Niceness::Naughty }, } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` Nice(u32), Naughty, // Variant `Nice` is a tuple struct that holds the number of good deeds}pub struct Kid { // Add a field `name` of type `String` pub name: String, // and `niceness` field of type `Niceness` pub niceness: Niceness, // Make all fields public}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Self { name: name, niceness: if Self::is_nice(good_deeds, bad_deeds) == true { Niceness::Nice(good_deeds) } else { Niceness::Naughty }, } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid {name: name, niceness: match Kid::is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty, }} } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Self { name: name, niceness: if Self::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds)} else {Niceness::Naughty} } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let mut niceness = Niceness::Naughty; if Self::is_nice(good_deeds, bad_deeds) { niceness = Niceness::Nice(good_deeds); } Self { name, niceness } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let niceness = if Self::is_nice(good_deeds, bad_deeds){ Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Kid{name, niceness} } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance if Self::is_nice(good_deeds, bad_deeds) { Self { name, niceness: Niceness::Nice(good_deeds), } } else { Self { name, niceness: Niceness::Naughty, } } } // Move yesterday's function to an associated function in the struct fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}impl Kid { // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 } pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance match Kid::is_nice(good_deeds, bad_deeds) { true => Kid{name: name, niceness: Niceness::Nice(good_deeds)}, false => Kid{name: name, niceness: Niceness::Naughty} } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> Niceness { if good_deeds == 0 && bad_deeds == 0 { return Niceness::Naughty; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); if ratio >= 0.75 { return Niceness::Nice(good_deeds as u32) } else { return Niceness::Naughty }}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { Kid { name: name, niceness: is_nice(good_deeds, bad_deeds) } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { Kid { name, niceness: if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }, } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub niceness: Niceness, pub name: String}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { match Kid::is_nice(good_deeds, bad_deeds) { true => Kid { niceness: Niceness::Nice(good_deeds), name }, false => Kid { niceness: Niceness::Naughty, name } } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let is_nice = Kid::is_nice(good_deeds, bad_deeds); Kid { name, niceness: if is_nice { Niceness::Nice(good_deeds) } else { Niceness::Naughty }, } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let is_nice = Kid::is_nice(good_deeds, bad_deeds); Kid { name, niceness: if is_nice { Niceness::Nice(good_deeds) } else { Niceness::Naughty }, } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32) , Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name : String, pub niceness : Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75} pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { if Kid::is_nice(good_deeds,bad_deeds){ return Kid{ name:name, niceness:Niceness::Nice(good_deeds) } } return Kid{ name:name, niceness:Niceness::Naughty }; }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(i32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let result_niceness = is_nice(good_deeds, bad_deeds); let good_deeds_i: i32 = good_deeds as i32; let niceness: Niceness; if result_niceness { niceness = Niceness::Nice(good_deeds_i); }else{ niceness = Niceness::Naughty; } Kid {name, niceness} }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { // Return a Kid instance let niceness = if Self::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Self { name, niceness } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)]pub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 } pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Kid { name, niceness } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name:String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid{ name, niceness:match is_nice(good_deeds, bad_deeds){ true=> Niceness::Nice(good_deeds), false=> Niceness::Naughty, } } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let niceness = if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Kid { name, niceness } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid { name: name, niceness: Self::is_nice(good_deeds, bad_deeds) } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> Niceness { if good_deeds == 0 && bad_deeds == 0 { return Niceness::Naughty; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); if ratio >= 0.75 { Niceness::Nice(good_deeds as u32) } else { Niceness::Naughty } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(i32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid{ name: name, niceness: Self::is_nice(good_deeds, bad_deeds) } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> Niceness { if good_deeds == 0 && bad_deeds == 0 { return Niceness::Naughty; } let good_deeds_weighted = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds_weighted = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds_weighted / (good_deeds_weighted + bad_deeds_weighted); if ratio >= 0.75 { Niceness::Nice(good_deeds as i32) } else { Niceness::Naughty } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let how_nice: bool = Self::is_nice(good_deeds, bad_deeds); let niceness = match how_nice { true => Niceness::Nice(good_deeds), false => Niceness::Naughty, }; Kid { name: name, niceness: niceness, } } // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structimpl Kid { pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 } pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let nice = Self::is_nice(good_deeds, bad_deeds); let niceness = match nice { true => Niceness::Nice(good_deeds), false => Niceness::Naughty, }; Self { name: name, niceness: niceness } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Naughty, Nice(u32)}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { Kid {name, niceness: {if Kid::is_nice(good_deeds, bad_deeds) {Niceness::Nice(good_deeds)} else {Niceness::Naughty}}} } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}// Move yesterday's function to an associated function in the struct}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, //pub niceness: Niceness pub niceness: Niceness}// Move yesterday's function to an associated function in the structimpl Kid { fn is_nice(good_deeds: u32, bad_deeds: u32) -> Niceness { let return_naugthy = Niceness::Naughty; let return_nice = Niceness::Nice(good_deeds.clone()); if good_deeds == 0 && bad_deeds == 0 { return return_naugthy } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); if ratio >= 0.75{ return return_nice }else{ return return_naugthy; } }}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid { name: name, //niceness: Niceness::Naughty niceness: Kid::is_nice(good_deeds,bad_deeds) } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = match Self::is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), _=> Niceness::Naughty }; Self { name, niceness } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = match is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), _=> Niceness::Naughty }; Self { name, niceness } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { pub name: String, pub niceness: Niceness // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let nice = Kid::is_nice(good_deeds, bad_deeds); Kid { name: name, niceness: if nice { Niceness::Nice(good_deeds) } else { Niceness::Naughty } } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { match Self::is_nice(good_deeds, bad_deeds) { true => Kid { name, niceness: Niceness::Nice(good_deeds)}, false => Kid { name, niceness: Niceness::Naughty}, } } fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Self { name: name, niceness: match is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty } } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty,}pub struct Kid { pub name: String, pub niceness: Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Self { Self { name: name, niceness: match Self::is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty, } } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty}pub struct Kid { pub name: String, pub niceness: Niceness}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { Kid { name, niceness: if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) }else{ Niceness::Naughty } } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structimpl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Kid { name, niceness } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}impl Kid { // Move yesterday's function to an associated function in the struct pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75 } pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds)} else { Niceness::Naughty }; Kid { name, niceness } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name:String, pub niceness:Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let niceness:Niceness = match is_nice(good_deeds, bad_deeds){ true => Niceness::Nice(good_deeds), false => Niceness::Naughty }; Kid{ name: name, niceness: niceness, } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name:String, pub niceness:Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let niceness:Niceness = match is_nice(good_deeds, bad_deeds){ true => Niceness::Nice(good_deeds), false => Niceness::Naughty }; Kid{ name: name, niceness: niceness, } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid { name, niceness: if is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty } } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = if Kid::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Self { name, niceness } }// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty}pub struct Kid { pub name : String, pub niceness : Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { match is_nice(good_deeds, bad_deeds) { true => Kid {name: name, niceness: Niceness::Nice(good_deeds) }, false => Kid {name: name, niceness: Niceness::Naughty} } }}
pub const GOOD_WEIGHT: f64 = 1.0;pub const BAD_WEIGHT: f64 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty}pub struct Kid { pub name: String, pub niceness: Niceness}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness = if Self::is_nice(good_deeds, bad_deeds) { Niceness::Nice(good_deeds) } else { Niceness::Naughty }; Kid { name, niceness } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let ratio = good_deeds as f64 / (good_deeds as f64 + (BAD_WEIGHT * bad_deeds as f64)); if ratio >= 0.75 { true } else { false } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness: Niceness = match is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty }; Kid { name: name, niceness: niceness } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name : String, pub niceness : Niceness,}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Self { name: name, niceness : match Self::is_nice(good_deeds, bad_deeds) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty, } } } pub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` Nice(u32), Naughty, // Variant `Nice` is a tuple struct that holds the number of good deeds}pub struct Kid { // Add a field `name` of type `String` pub name: String, // and `niceness` field of type `Niceness` pub niceness: Niceness, // Make all fields public}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { return Kid { name: name, niceness: match (is_nice(good_deeds, bad_deeds)) { true => Niceness::Nice(good_deeds), false => Niceness::Naughty } } }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { Nice(u32), Naughty, }pub struct Kid { // Add a field `name` of type `String` pub name: String, // and `niceness` field of type `Niceness` pub niceness: Niceness, // Make all fields public}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { let niceness: Niceness; if Kid::is_nice(good_deeds, bad_deeds) { niceness = Niceness::Nice(good_deeds); } else { niceness = Niceness::Naughty; } Kid {name, niceness} } fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); if ratio >= 0.75 { return true } return false }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty,}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance let is_nice = is_nice(good_deeds, bad_deeds); if !is_nice { return Kid { name: name, niceness: Niceness::Naughty, }; } return Kid { name: name, niceness: Niceness::Nice(good_deeds), }; }}
pub const GOOD_WEIGHT: f32 = 1.0;pub const BAD_WEIGHT: f32 = 2.0;#[derive(Debug, PartialEq)] // needed for testspub enum Niceness { // Create the enum variants `Nice` and `Naughty` // Variant `Nice` is a tuple struct that holds the number of good deeds Nice(u32), Naughty}pub struct Kid { // Add a field `name` of type `String` // and `niceness` field of type `Niceness` // Make all fields public pub name: String, pub niceness: Niceness,}// Move yesterday's function to an associated function in the structpub fn is_nice(good_deeds: u32, bad_deeds: u32) -> bool { if good_deeds == 0 && bad_deeds == 0 { return false; } let good_deeds = good_deeds as f32 * GOOD_WEIGHT; let bad_deeds = bad_deeds as f32 * BAD_WEIGHT; let ratio = good_deeds / (good_deeds + bad_deeds); ratio >= 0.75}impl Kid { pub fn new(name: String, good_deeds: u32, bad_deeds: u32) -> Kid { // Return a Kid instance Kid { name, niceness: match(is_nice(good_deeds, bad_deeds)) { true => { Niceness::Nice(good_deeds) }, false => { Niceness::Naughty } } } }}