簡體   English   中英

如何將 std::ffi::OsString 轉換為 f64 或 f32

[英]How do I convert std::ffi::OsString to f64 or f32

我正在用一個函數獲取第二個參數,並希望將它從 std::ffi:OsString 轉換為浮點數或雙精度數。 我目前有以下代碼,但解析不起作用。

fn get_second_arg() -> Result<f64, Box<dyn Error>> {
    match env::args_os().nth(2) {
        None => Err(From::from("expected 2 arguments")),
        Some(min_balance) =>  {
            let min_balance_f64: f64 = min_balance.parse()?
            Ok(min_balance_f64)
        }
    }
} 

我收到錯誤:

no method named `parse` found for struct `std::ffi::OsString` in the current scope

std::ffi::OsString有一個成員into_string返回Result<String, OsString> ,您可以在其中提取Ok變體並調用String::parse

為了完整起見,這是@Braddy Dean 回答的工作代碼:

fn get_second_arg() -> Result<f64, Box<dyn Error>> {
    match env::args_os().nth(2) {
        None => Err(From::from("expected 2 arguments")),
        Some(min_balance) =>  {
            let min_balance_option = min_balance.into_string().ok();
            match min_balance_option {
                None => Err(From::from("Unable to parse second argument")),
                Some (value) => {
                    let min_balance_f64: f64 = value.parse()?;
                     Ok(min_balance_f64)
                }
            }
            
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM