Rustで簡単なプログラムを作ってみる


Rustで簡単なプログラムを5つほど書いていくだけ。

標準入力から受け取った文字列を出力する

use std::io;

fn main() {
    let mut string = String::new();
    io::stdin()
        .read_line(&mut string)
        .expect("読み込みに失敗しました");
    print!("{}", string);
}

標準入力にプログラム内の定数が割り切れる数が入力されるまでループ

use std::io;

fn main() {
    loop {
        const NUMBER: u16 = 12;
        let mut string = String::new();
        io::stdin()
            .read_line(&mut string)
            .expect("読み込みに失敗しました");
        let n: u16 = string.trim().parse().unwrap();
        if NUMBER % n == 0 {
            println!("割り切れました");
            break;
        } else {
            println!("割りきれません");
        }
    }

標準入力から受け取った文字列から数字だけ抜き出して足した合計を出力する

use std::io;

fn main() {
    let mut number: u16 = 0;

    let mut string = String::new();
    io::stdin()
        .read_line(&mut string)
        .expect("読み込みに失敗しました");

    let split_vec = string.split("").collect::<Vec<&str>>();
    for e in split_vec.iter() {
        match e.parse::<u16>() {
            Ok(n) => {
                number += n;
            }
            Err(_) => {}
        }
    }

    println!("合計は: {}", number);
}

構造体Userを定義(Userのフィールド値を出力するprint_userメソッド付き)

struct User {
    username: String,
    email: String,
    age: u64,
    active: bool,
}

impl User {
    fn print_user(&self) {
        let mut string = String::new();

        fn add_property_to_string(string: &mut String, property_name: &str, property: &String) {
            string.push_str(format!("{}: ", property_name).as_str());
            string.push_str(property.as_str());
            string.push_str("\n");
        }

        add_property_to_string(&mut string, "username", &self.username);
        add_property_to_string(&mut string, "email", &self.email);
        add_property_to_string(&mut string, "age", &self.age.to_string());
        add_property_to_string(&mut string, "active", &self.active.to_string());

        println!("{}", string);
    }
}

fn main() {
    let user1 = User {
        email: String::from("example@com"),
        username: String::from("Anny"),
        age: 24,
        active: true,
    };

    user1.print_user();
}

rootディレクトリにあるsample.txtを読み込み、末尾に「このファイルは読み込まれました」と付け加えて書き換える

use std::fs::File;
use std::io::{BufReader, BufWriter, Read, Write};

fn main() {
    let mut reader =
        BufReader::new(File::open("sample.txt").expect("ファイルが見つかりませんでした"));

    let mut content = String::new();
    reader
        .read_to_string(&mut content)
        .expect("ファイルが読み込めませんでした");

    println!("text: \n{}", content);

    content.push_str("\nこのファイルは読み込まれました");

    let mut writer =
        BufWriter::new(File::create("sample.txt").expect("ファイルが見つかりませんでした"));
    writer
        .write(content.as_bytes())
        .expect("ファイルに書き込めませんでした");
}