字符串转数字

use std::io::{self, BufRead};
use std::string::*;

fn main() {
    let mut line = String::new();
    let stdin = io::stdin();
    stdin
        .lock()
        .read_line(&mut line)
        .expect("Could not read line");
    let myint = s_to_int(line);
    println!("{:?}", myint);
}

fn s_to_int(s1: String) -> u32 {
    let mut s = String::new();
    for c in s1.chars() {
        match c {
//            '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' => {
            '0'...'9' => {

                s.push(c);
            }
            _ => {}
        }
    }

    if s.len() > 0 {
        return s.parse::<u32>().unwrap();
    } else {
        return 0;
    }
}

怎么知道 输入已经超过 4294967295 return s.parse::().unwrap();

fn s_to_int 这个函数怎么写成闭包

    let str1:String = str2.chars()
                  .map(|x| match x {
                    '0'...'9' => x,
    //            _ => return       - 报错 
    //            _ => ''          - 报错 
                  _ => x.exit() }  - 报错 
                  ).collect();
如下方法 屏蔽不了 r123 会报错 有办法么
    let str1 : String = str2.chars() 
             .take_while(|c| c.is_digit(10))
             .collect::<String>(); 
    let myint = str1.parse::<u32>().unwrap();

发现rust的小词 好多呀 and_then unwrap_or_else add_one is_done 这些有专门的学习文章么

本来打算用来动动秀逗的脑壳的 发现非常的麻烦 有趣的地方太多 难度也尤其大

文章来源:

Author:Rust.cc
link:https://rust.cc/article?id=8c543485-f1ec-47df-bb56-8ab4faa3cac9