体調のよさの基本は非労から

土曜日です。


充分な睡眠をとったので体調のよさがありました(非労は正義)(日記勢に健康のよくなさが目立つので心配)(どうか人々によりいっそうの非労が訪れてほしい)。


散髪に行き、衣類の購入をやり、ピアノをやりました。

難解(ラブライブ!サンシャイン!!のこと)(ツイ非真面目勢への配慮)(なら最初からきちんと書けばいいのでは)、ブレンド・S、キラ☆プリを視聴しました。


アイカツスターズライブBDの1日目の視聴が終わりました。極めてよかった・・・。アイカツシリーズは歌唱部分は声優さんではないのですが、ライブBDを見るとそれもむべなるかなという気持ちです。極めてよかった・・・(2回め)。

FEH の投票大戦を楽しみました。性騎士つよい・・・(ツイ参)。


久々に Rust(chapter 8 練習問題3)をやりました。記憶の失われが激しかったものの、なんとか問題を解けました。しかし Rust 力が低いのでよい書き方ではないかもしれない・・・。


寝ます。


chapter8_3/src/main.rs

use std::collections::HashMap;
use std::cmp::Ordering;


fn main() {
    let mut c = Company { employees: HashMap::new() };
    c.add_employee("Add Sally to Engineering");
    c.add_employee("Add Amir to Sales.");

    println!("{:?}", c.get_employee_names(Some("Engineering")));
    println!("{:?}", c.get_employee_names(Some("Sales")));
    println!("{:?}", c.get_employee_names(None));
}


struct Company {
    employees: HashMap<String, String>,
}

impl Company {
    fn add_employee(&mut self, sentence: &str) {
        let words: Vec<&str> = sentence.split(
            |c| c == ' ' || c == '.'
        ).collect();

        self.employees.insert(
            String::from(words[1]),
            String::from(words[3]),
        );
    }

    fn get_employee_names(&self, department: Option<&str>) -> Vec<&String> {
        let mut employees_vec: Vec<(&String, &String)>
            = self.employees.iter().collect();
        employees_vec.sort_by(|a, b| a.0.cmp(b.0));

        let mut names = Vec::new();
        for employee in employees_vec.iter() {
            match department {
                None    => names.push(employee.0),
                Some(x) => {
                    if let Ordering::Equal = employee.1.cmp(&x.to_string()) {
                        names.push(employee.0);
                    }
                }
            }
        }
        names
    }
}