31: Improve solution for Rust track exercise "Raindrops".

[?]
Aaw9nJhsNmfzFih9mKyNw9mV8CgERXJkRa1kK1Kx3LQH
Sep 2, 2021, 9:42 PM
XDEY7SNLZMAC3KIKUHDGZGGXHHT7BYF3GSVAREXESO5D4S6FZBQQC

Dependencies

  • [2] J3ZPU3R2 28: Add missing semicolon in solution for Rust track exercise "Raindrops".
  • [3] IXMBS6ZP 29: Improve solution for Rust track exercise "Nth Prime".
  • [4] N3POGH26 7: Add solution for Rust track exercise "Raindrops".
  • [5] ERYD4CD7 11: Add solution for Rust track exercise "Nth Prime".
  • [6] MBAFQOWX 8: Improve solution for Rust track exercise "Raindrops".
  • [7] MSFESBT6 6: Add Rust track exercise "Raindrops".
  • [8] SGDHLMNR 27: Improve solution for Rust track exercise "Raindrops".
  • [9] UTP7D53Q 12: Improve solution for Rust track exercise "Nth Prime".
  • [10] WQIAT4H6 9: Improve solution for Rust track exercise "Raindrops".
  • [11] QGB53CNE 14: Improve solution for Rust track exercise "Raindrops".
  • [*] JZN2AQ3E 10: Add Rust track exercise "nth-prime".

Change contents

  • edit in rust/raindrops/src/lib.rs at line 1
    [4.1781]
    [4.1782]
    const PREFIX: &str = "Pl";
    const FACTORS_VOWELS: &[(u32, &str)] = &[(3, "i"), (5, "a"), (7, "o")];
    const SUFFIX: &str = "ng";
    const MAX_STRING_LENGTH: usize =
    (PREFIX.len() + FACTORS_VOWELS[0].1.len() + SUFFIX.len()) * FACTORS_VOWELS.len();
  • replacement in rust/raindrops/src/lib.rs at line 8
    [4.1819][4.0:42]()
    let mut out = String::with_capacity(15);
    [4.1819]
    [4.1046]
    // Check that the assumption that MAX_STRING_LENGTH is equal to the length of constructing the largest output holds.
    debug_assert!(
    FACTORS_VOWELS
    .iter()
    .map(|tuple| PREFIX.len() + tuple.1.len() + SUFFIX.len())
    .sum::<usize>()
    .eq(&MAX_STRING_LENGTH),
    "MAX_STRING_LENGTH is not equal to the length of the largest constructible output."
    );
  • replacement in rust/raindrops/src/lib.rs at line 18
    [4.1047][4.75:173](),[4.173][4.43:67](),[4.67][4.199:224](),[4.199][4.199:224](),[4.224][2.0:24](),[2.24][4.249:260](),[4.91][4.249:260](),[4.249][4.249:260]()
    [(3, "i"), (5, "a"), (7, "o")]
    .iter()
    .for_each(|(factor, vowel)| {
    if n % factor == 0 {
    out.push_str("Pl");
    out.push_str(vowel);
    out.push_str("ng");
    }
    });
    [4.1047]
    [4.190]
    let mut out = String::with_capacity(MAX_STRING_LENGTH);
    FACTORS_VOWELS.iter().for_each(|(factor, vowel)| {
    if (n % factor).eq(&0) {
    out.push_str(PREFIX);
    out.push_str(vowel);
    out.push_str(SUFFIX);
    }
    });
  • replacement in rust/nth-prime/src/lib.rs at line 43
    [4.1291][4.1291:1369]()
    // Might return incorrect value if values greater than u32::MAX are cast.
    [4.1291]
    [4.1369]
    // Might panic if values greater than u32::MAX are cast.
  • replacement in rust/nth-prime/src/lib.rs at line 59
    [3.399][3.399:478]()
    // Might return incorrect value if values greater than u32::MAX are cast.
    [3.399]
    [3.478]
    // Might panic if values greater than u32::MAX are cast.
  • replacement in rust/nth-prime/src/lib.rs at line 68
    [4.124][4.124:202]()
    // Might return incorrect value if values greater than u32::MAX are cast.
    [4.124]
    [3.549]
    // Might panic if values greater than u32::MAX are cast.
  • replacement in rust/nth-prime/src/lib.rs at line 77
    [3.692][3.692:771]()
    // Might return incorrect value if values greater than u32::MAX are cast.
    [3.692]
    [3.771]
    // Might panic if values greater than u32::MAX are cast.