• ImplyingImplications@lemmy.ca
    link
    fedilink
    arrow-up
    8
    arrow-down
    2
    ·
    20 hours ago

    Me, every time I try searching a Rust question.

    That’s easy. Just do:

    fn is_second_num_positive() -> bool {
        let input = "123,-45";
        let is_positive =
            input.split(',')
            .collect::<Vec<&str>>()
            .last()
            .unwrap()
            .parse::<i32>()
            .unwrap()
            .is_positive();
        is_positive
    }
    
    • shape_warrior_t@programming.dev
      link
      fedilink
      English
      arrow-up
      14
      ·
      18 hours ago

      Can’t resist pointing out how you should actually write the function in a “real” scenario (but still not handling errors properly), in case anyone wants to know.

      If the list is guaranteed to have exactly two elements:

      fn is_second_num_positive_exact(input: &str) -> bool {
          let (_, n) = input.split_once(',').unwrap();
          n.parse::<i32>().unwrap() > 0
      }
      

      If you want to test the last element:

      fn is_last_num_positive(input: &str) -> bool {
          let n = input.split(',').next_back().unwrap();
          n.parse::<i32>().unwrap() > 0
      }
      

      If you want to test the 2nd (1-indexed) element:

      fn is_second_num_positive(input: &str) -> bool {
          let n = input.split(',').nth(1).unwrap();
          n.parse::<i32>().unwrap() > 0
      }
      
      • beeb@lemmy.zip
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        8 hours ago

        Even better to use expect with a short message of what the assumption is: “the string should contain a comma” if it ever panics you’ll know exactly why.