Rust programs are compiled using rustc compiler version 1.75.0 x64 with the following parameters:
rustc -O --edition 2021 %1
You can get the latest Rust compiler from the official website.
Examples of solving a problem
A sample solution for the 1000. A + B problem in Rust:
use std::io;
fn main() {
    let mut input = String::new();
    io::stdin()
        .read_line(&mut input)
        .unwrap();
    let mut s = input.trim().split(' ');
    let a_str = s.next().unwrap();
    let a: i32 = a_str.parse().unwrap();
    let b_str = s.next().unwrap();
    let b: i32 = b_str.parse().unwrap();
    println!("{}", a + b);
}
Or more advanced and effective solution for the same problem:
use std::io;
fn main() {
    let mut input = String::new();
    io::stdin()
        .read_line(&mut input)
        .expect("correct input");
    let res = input.trim()
                   .split(' ')
                   .map(|a| a.parse::<i32>())
                   .map(|a| a.expect("parsed integer"))
                   .fold(0i32, |sum, a| sum + a);
    println!("{}", res);
}
A sample solution for the 1001. Reverse Root in Rust:
use std::io;
use std::io::prelude::*;
fn main() {
    let mut v: Vec<i64> = Vec::new();
    let stdin = io::stdin();
    for t in stdin.lock().lines() {
        let cur_line = t.unwrap();
        for u in cur_line.split(' ') {
            let cur_txt = u.trim();
            if cur_txt.len() > 0 {
                let cur_num: i64 = cur_txt.parse().unwrap();
                v.push(cur_num);
            }
        }
    }
    let mut i = v.len();
    while i > 0 {
        i -= 1;
        let f_num = v[i] as f64;
        println!("{:.*}", 4, f_num.sqrt());
    }
}
Or more advanced and effective solution for the same problem:
use std::io::{self, BufReader};
use std::io::prelude::*;
fn solve(input: &mut Read, output: &mut Write) {
    let reader = BufReader::new(input);
    let mut v: Vec<i64> = Vec::new();
    for t in reader.lines()
                   .map(|a| a.expect("correct input")) {
        for u in t.split(' ')
                  .map(|a| a.trim())
                  .filter(|a| a.len() > 0)
                  .map(|a| a.parse::<i64>().expect("parsed integer")) {
            v.push(u);
        }
    }
    for u in v.into_iter().rev().map(|a| a as f64) {
        writeln!(output, "{:.*}", 4, u.sqrt()).expect("valid output");
    }
}
fn main() {
    solve(&mut io::stdin(), &mut io::stdout());
}
Tests
Rust has a built-in engine for unit tests. One can write a test section using a special #[test] directive and it will be compiled only if a special option is defined for the compiler:
rustc --test main.rs
Here is an example of reading a test data from a file (for the problem 1001 solution above):
fn solve(input: &mut Read, output: &mut Write) {
    ...
}
fn main() {
    solve(&mut io::stdin(), &mut io::stdout());
}
#[cfg(test)]
mod tests {
    use std::fs::File;
    use solve;
    #[test]
    fn basic_test() {
        let mut f = File::open("test1.txt").expect("correct test");
        let mut buf: Vec<u8> = Vec::new();
        solve(&mut f, &mut buf);
        let res = String::from_utf8(buf).expect("valid string");
        assert_eq!(res,
"2297.0716
936297014.1164
0.0000
37.7757
");
    }
}
Earlier compilers
- The Rust 1.9.0 x86 was used until April, 12 2018.
- The Rust 1.25.0 x86 was used until September, 1 2020.
- The Rust 1.45.0 x64 was used until January, 22 2022.
- The Rust 1.58.1 x64 was used until January, 22 2024.