• 0 Posts
  • 4 Comments
Joined 1 year ago
cake
Cake day: May 9th, 2024

help-circle
  • PR: Merged

    Good call with using a shared reference so now we can kiss our partner(s) more than once!!

    Kissing many partners with one big smooch might be hard tho, maybe we need to change the implementation to use combinatorics so that everyone kisses each of their partners at least once.

    Since there’s no way to tell who kisses who, i can cheat by printing nCr times :3

    pub fn lovers(partners: &[&dyn Gender]) {
        match partners.len() {
            0 => {
                println!("ghost smooch~");
            }
            1 => {
                println!("mirror smooch~");
            }
            p => {
                // p >= 2, safe to unwrap
                for _ in 0..ncr(p, 2).unwrap() {
                    println!("smooch~");
                }
            }
        }
    }
    

  • pub trait Gender {}
    
    // implement your own gender, and if u want, publish online! :3
    pub struct Masculine;
    impl Gender for Masculine {}
    pub struct Feminine;
    impl Gender for Feminine {}
    
    // removed old api:
    // fn two_lovers(one: Masculine, two: Feminine)
    // srry not srry for breaking backwards compat
    // new version has more flexible api!<3
    fn two_lovers(one: Box<dyn Gender>, two: Box<dyn Gender>) {
        println!("smooch~");
    }
    
    // todo: other functions!!
    
    #[cfg(test)]
    mod tests {
        use super::*;
    
        #[test]
        fn me_and_who() {
            two_lovers(Box::new(Feminine), Box::new(Feminine));
        }
    }
    

  • Someone can correct me if im wrong but I think nullable in C# still doesnt force you to do a null check before accessing properties or methods, however I believe it does give a type error when using a nullable type where non-nullable is expected, which is good. So it might not be 1-to-1 but it fulfills a similar purpose for sure.

    Coming from a rust background I would have sure appreciated my workplace enabling the nullable feature on our main codebase from the start. I’ve run out of patience for null errors :(