2015-01-15 4 views
0

한 줄에 문자열로 표준 입력에서 한 줄을 읽어 즉, 구문 분석하지 않고 동일한 작업을 수행하는 방법, 내가 한 줄을 읽고 한 줄에 숫자로 변환 수 있다는 사실을 알고 코드

let lines: u32 = io::stdin().read_line().ok().unwrap().trim().parse().unwrap(); 

및 한 줄에? 지금은 이렇게 :

let line_u = io::stdin().read_line().ok().unwrap(); 
let line_t = line_u.as_slice().trim(); 

편집 : 여기에 무슨 일이 일어나고 있는지 설명 : 문자열이기 때문에

pub fn stdin() -> StdinReader 
fn read_line(&mut self) -> IoResult<String> // method of StdinReader 
type IoResult<T> = Result<T, IoError>; 
fn ok(self) -> Option<T>     // method of Result 
fn unwrap(self) -> T      // method of Option 
fn trim(&self) -> &str      // method of str from trait StrExt 
fn to_string(?) -> String // I don't know where is this located in documentation 

우리는 문자열에 트림을 사용할 수는하는 STR 포인터, 소유 한 문자열로 decoreated.

parse() , stdin(), read_line(), IoResult, ok(), unwrap(), trim(), str

답변

2

trim()unwrap()에 의해 반환 된 String&str 뷰를 돌려줍니다. 성명 끝에 String이 더 이상 존재하지 않으므로이 오브젝트를 저장할 수 없습니다. 따라서 to_string()을 사용하여 &strString으로 다시 변환하십시오.

let line = io::stdin().read_line().ok().unwrap().trim().to_string(); 
관련 문제