• @tuna@discuss.tchncs.de
    link
    fedilink
    232 days ago
    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));
        }
    }
    
    • Nat (she/they)
      link
      fedilink
      12
      edit-2
      2 days ago

      PR: support polyamory

      This also changes the API to take a shared reference rather than ownership of the lovers :3

      pub fn lovers(partners: &[&dyn Gender]) {
          println!("smooch~");
      }
      

      Oh and while we’re at it, for our agender users:

      impl Gender for () {}
      
      • @tuna@discuss.tchncs.de
        link
        fedilink
        62 days ago

        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~");
                    }
                }
            }
        }
        
  • @Legume5534@lemm.ee
    link
    fedilink
    English
    323 days ago

    I fucking knew when I came into this thread it would just be nerds arguing over how wrong the joke is.

  • Farid
    link
    fedilink
    14
    edit-2
    3 days ago

    Should be enum.
    And don’t capitalize your variables.