結果

問題 No.431 死亡フラグ
ユーザー halshiphalship
提出日時 2021-06-02 19:43:06
言語 Rust
(1.77.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,076 bytes
コンパイル時間 12,107 ms
コンパイル使用メモリ 396,840 KB
最終ジャッジ日時 2024-04-27 03:51:58
合計ジャッジ時間 12,751 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
error[E0782]: trait objects must include the `dyn` keyword
 --> src/main.rs:5:45
  |
5 | type Result<T> = std::result::Result<T, Box<Error>>;
  |                                             ^^^^^
  |
help: add `dyn` keyword before this trait
  |
5 | type Result<T> = std::result::Result<T, Box<dyn Error>>;
  |                                             +++

For more information about this error, try `rustc --explain E0782`.
error: could not compile `main` (bin "main") due to 1 previous error

ソースコード

diff #

use std::io;
use std::error::Error;
use std::fmt;

type Result<T> = std::result::Result<T, Box<Error>>;

enum State {
    Dead,
    Survived,
}

impl fmt::Display for State {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            State::Dead => write!(f, "DEAD"),
            State::Survived => write!(f, "SURVIVED"),
        }
    }
}

fn get_line() -> Result<String> {
    let mut input = String::new();
    io::stdin().read_line(&mut input)?;
    Ok(input)
}

fn read_flags(input: String) -> Result<(u8, u8, u8, u8)> {
    let flags: Vec<&str> = input.trim().split(' ').collect();
    Ok((flags[0].parse()?,
        flags[1].parse()?,
        flags[2].parse()?,
        flags[3].parse()?))
}

fn check_dead_or_live(d1: u8, d2: u8, d3: u8, s: u8) -> State {
    if s == 1 {
        return State::Survived;
    }

    if (d1 + d2 + d3) < 2 {
        return State::Survived;
    }
    State::Dead
}

fn main() {
    let (d1, d2, d3, s) = get_line().and_then(read_flags).unwrap();

    println!("{}", check_dead_or_live(d1, d2, d3, s));
}
0