Rustで標準入力できる何かを作る。

コマンドラインでstopを入力するまでの文字を配列にして表示する。

参考サイト

ここ「Rust-101, Part 03: Input

準備

dockerのrustを使います。こんな感じで。

docker run -it --rm -e USER=$USER -v "$PWD":/usr/src/ -w /usr/src rustlang/rust:nightly bash

dockerのRust環境に入ったら、cargoでパッケージを生成。

cargo new cmd_input

実装

main.rs

use std::io::prelude::*;
use std::io;

fn read_vec() -> Vec<String> {
    let mut v: Vec<String> = Vec::<String>::new();
    let stdin = io::stdin();
    for line in stdin.lock().lines() {
        match line {
            Ok(s) => {
                if s.trim() == "stop" {
                    break;
                }
                v.push(s);
            },
            Err(_) => {
                println!("Error!");
            }
        }
    }
    v
}

pub fn main() {
    let v = read_vec();
    println!("{:?}", v);
}

動作確認

cargo run

こんな感じで、AAA、BBB、stop って打った後、配列が表示されたらOK

AAA
BBB
stop
["AAA", "BBB"]