[英]How to parse complete f32 with nom?
有一個函數float_s
,用於解析流mod中的浮點數(可以返回Incomplete
)。 我想使用CompleteStr
作為輸入類型。 我怎么能做到這一點?
關於&str
和CompleteStr
不匹配的抱怨,簡單的方法失敗了:
named!(parse_float_complete(CompleteStr) -> f32,
ws!(::num::float_s)
);
我正在使用nom 4.0.0
。
nom v4.1.0
解決了這個問題:
float
和double
現在可以處理所有nom的輸入類型( &[u8]
, &str
, CompleteByteSlice
, CompleteStr
以及任何實現所需特征的類型)。 float_s
和double_s
得到了相同的修改,但現在已棄用 float_s
需要一個字符串,所以你必須從CompleteStr
提取字符串:
named!(parse_float_complete(CompleteStr) -> f32,
ws!(call!(|input| ::num::float_s(input.0).map(|output, result| CompleteStr(output, result))))
);
我目前的解決方法是只復制粘貼float_s
實現:
fn float_cs(input: CompleteStr) -> ::nom::IResult<CompleteStr, f32> {
flat_map!(input, call!(::nom::recognize_float), parse_to!(f32))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.