Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Rust] 문자의 아스키코드 출력 본문
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는 참 잘만든것 같습니다.
'개발 및 공부 > 언어' 카테고리의 다른 글
[Rust] 빌드 스크립트 (0) | 2018.01.02 |
---|---|
[Rust] Youtube playlist를 mp3 파일들로 다운로드 (0) | 2018.01.02 |
[C#] WPF 책 샀었던걸 반쯤 봤는데 (2) | 2018.01.02 |
[C#] DevChat - 원격 개발용 디스코드 봇 (0) | 2018.01.02 |
[C++] 뭐같은 Undefined Behavior (0) | 2018.01.01 |
Comments