NeuroWhAI의 잡블로그

[Rust] 문자의 아스키코드 출력 본문

개발 및 공부/언어

[Rust] 문자의 아스키코드 출력

NeuroWhAI 2018. 1. 2. 18:16


C++로 백준 단계별 문제를 하나씩 하고 있는데
쉬운게 나와서 Rust로 해보려고 했으나...
표준라이브러리에 익숙하지가 않아서 구글링 ㅠㅠ

1
2
3
4
5
6
7
8
9
10
11
12
13
// https://stackoverflow.com/questions/30678953/how-to-read-a-single-character-from-input-as-u8
 
use std::io::{self, Read};
 
fn main()
{
    let input = io::stdin()
        .bytes().next()
        .and_then(|result| result.ok())
        .map(|byte| byte as i32);
        
    println!("{}", input.unwrap());
}
cs

글로 설명하면 공부가 될것 같아서 아래는 해석

표준입출력에서 bytes()를 통해 Result<u8, _>을 Item으로 하는 Iterator를 얻습니다.
그리고 next()를 굴려 첫 요소를 가진 Option<Item/*=Result<u8, _>*/>를 얻습니다.
and then Option의 and_then에 Result의 ok()값(Option<u8>)을 반환하는 클로저를 씁니다.
그리고 마침내 u8을 i32로 캐스팅하는 클로저를 map에 써서 Option<i32>을 얻습니다.
(사실 i32로 캐스팅은 안해도 될듯요.)
출력할때 unwrap()을 써서 i32를 얻습니다.

Rust의 Option, Result는 참 잘만든것 같습니다.



Comments