News for hackers. Stuff that matters.
Re:Rust Weird Expressions by estebank on Friday May 14, 2021 @12:57PM (#27156535)
I like matching on bools on the same cases where someone wouldn't write braces around the body in C: whenever the corresponding expressions keep you under the line length. For example:

    let plural = match cases.len() > 1 {
        true => "s",
        false => "",
    };
Of course, you'd more likely have something like

    let prefix = match cases.len() {
        0 => "no values".to_string(),
        1 => "a value".to_string(),
        n => format!("{} values", n),
    };
Re:Rust Weird Expressions by spullara on Friday May 14, 2021 @02:41PM (#27158125)
My favorite thing about internationalization is that some languages have 6 different translations for different amounts.
Re:Rust Weird Expressions by rabidferret on Friday May 14, 2021 @01:11PM (#27156758)

    let plural = match cases.len() {
        1.. => "s",
        0 => "",
    };
;P
Re:Rust Weird Expressions by cyphar on Friday May 14, 2021 @01:17PM (#27156853)
That's not the correct plural rule in English, you'd want

    let plural = match cases.len() {
        0 | 2.. => "s",
        1 => "",
    };
or something (though to be fair the original code snippet also handled "0" incorrectly -- should be "cases.len() != 1").
Re:Rust Weird Expressions by iudqnolq on Friday May 14, 2021 @01:39PM (#27157228)
And also to be fair you probably don't want to be hardcoding English pluralization rules.
Re:Rust Weird Expressions by rabidferret on Saturday May 15, 2021 @08:01AM (#27164445)
I used to maintain a library which actually tried to implement proper English pluralization rules. I can confirm you don't want to do that.
Re:Rust Weird Expressions by iudqnolq on Friday May 14, 2021 @01:06PM (#27156659)
Interesting. I prefer writing that as an if/else on one line when rufmt lets me, but I see your point.