我正在尝试编译这个程序:
extern crate num;
use num::bigint::BigInt;
use std::from_str::FromStr;
fn main () {
println!("{}", BigInt::from_str("1"));
}
但是rustc
的输出是
testing.rs:6:20: 6:36 error: unresolved name `BigInt::from_str`.
testing.rs:6 println!("{}", BigInt::from_str("1"));
^~~~~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:23: 2:77 note: expansion site
<std macros>:1:1: 3:2 note: in expansion of println!
testing.rs:6:5: 6:43 note: expansion site
error: aborting due to previous error
我怀疑自己做了一些非常错误的事情,但我尝试过搜索示例并尝试了一系列不同的更改,而且我没有尝试过。
如何更改源代码以便编译?
答案 0 :(得分:5)
在最新版本的Rust中删除了普通函数from_str
。此功能现在仅作为FromStr
特征的方法提供。
解析值的现代方法是str
的{{3}}方法:
extern crate num;
use num::bigint::BigInt;
fn main() {
match "1".parse::<BigInt>() {
Ok(n) => println!("{}", n),
Err(_) => println!("Error")
}
}
答案 1 :(得分:4)
extern crate num;
use num::bigint::BigInt;
fn main () {
println!("{}", from_str::<BigInt>("1"));
}
在函数调用中,您需要将::
放在尖括号之前。
答案 2 :(得分:1)
这适用于直接调用trait实现而不是通过实用程序函数。 这不是惯用的。
extern crate num;
use num::bigint::BigInt;
use std::from_str::FromStr;
fn main () {
let x : Result<BigInt,_> = FromStr::from_str("1");
println!("{}", x);
}
答案 3 :(得分:1)
您的原始代码几乎可以按原样工作:
import React from 'react';
const Item = ({ isHighlighted }) => {
const style = {
height: '50px',
marginTop: '10px',
border: isHighlighted ? '2px solid red' : '1px solid black'
};
return <div style={style} />
};
export default ( { } ) => {
const items = [{
id: '1',
date: new Date("2019-01-01"),
name: 'item1'
}, {
id: '2',
date: new Date("2019-01-03"),
name: 'item1'
}, {
id: '3',
date: new Date("2019-01-02"),
name: 'item1'
}];
const highlightedItem = items.reduce((acc, item) => {
if (item.date > acc.closestDate) {
return {
id: item.id,
closestDate: item.date
}
} else {
return acc;
}
}, {
id: '',
closestDate: new Date(0)
});
return (
<div>
{
items.map(item => <Item isHighlighted={item.id === highlightedItem.id} />)
}
</div>
);
}
您需要切换到use num::bigint::BigInt; // 0.2.0
use std::str::FromStr;
fn main() {
println!("{:?}", BigInt::from_str("1"));
}
,并且std::str::FromStr
返回from_str
,它需要Result
({:?}
)格式化程序。