Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 在《铁锈》一书中,这一点怎么能被改写得不那么迫切呢_Functional Programming_Rust - Fatal编程技术网

Functional programming 在《铁锈》一书中,这一点怎么能被改写得不那么迫切呢

Functional programming 在《铁锈》一书中,这一点怎么能被改写得不那么迫切呢,functional-programming,rust,Functional Programming,Rust,好吧,这仍然不是完美的,因为我不喜欢I变量,但我的第一个目标是摆脱命令循环:)你已经很接近了!您的KeyValuePair和toHashMap实际上是,它在fromtiterator特性上工作,HashMap为(K,V)对实现 因此,它类似于[(k,v),(k,v),(k,v)]。move_iter()。collect::() 对于i部分,有,它将[a,b,c]转换为[(0,a)、(1,b)、(2,c)] 这就是最终结果: REGEX变量序列捕获iter(路径) .enumerate() .ma

好吧,这仍然不是完美的,因为我不喜欢
I
变量,但我的第一个目标是摆脱命令循环:)

你已经很接近了!您的
KeyValuePair
toHashMap
实际上是,它在
fromtiterator
特性上工作,
HashMap
(K,V)
对实现

因此,它类似于
[(k,v),(k,v),(k,v)]。move_iter()。collect::()

对于
i
部分,有,它将
[a,b,c]
转换为
[(0,a)、(1,b)、(2,c)]

这就是最终结果:

REGEX变量序列捕获iter(路径)
.enumerate()
.map(|(i,matched)|(matched.at(1).to_string(),i))
.collect()

(您可以将
HashMap
留给推断,如果可以的话(例如,方法返回类型),或者在
collect
调用中指定它,
.collect::()

您已经非常接近了!您的
KeyValuePair
toHashMap
实际上是,它在
fromtiterator
特性上工作,
HashMap
(K,V)
对实现

因此,它类似于
[(k,v),(k,v),(k,v)]。move_iter()。collect::()

对于
i
部分,有,它将
[a,b,c]
转换为
[(0,a)、(1,b)、(2,c)]

这就是最终结果:

REGEX变量序列捕获iter(路径)
.enumerate()
.map(|(i,matched)|(matched.at(1).to_string(),i))
.collect()

(您可以将
HashMap
留给推断,如果可以的话(例如,方法返回类型),或者在
collect
调用中指定它,
。collect::()

太棒了!谢谢。我可能应该把你列为我的楼层项目的贡献者;-)谢谢你的额外信息!是什么样的功能让我只写
.collect::()
而不是
.collect::()
?两种方法都可以。这只是类型推断的另一种形式吗?@Christoph,是的,这是局部类型推断。据我所知,这是锈病的最新特征。@Vladimitmaveev:我不知道这是最近引入的特征,尽管我只是在过去几个月才知道它。@ChrisMorgan,这是它的拉动请求:。它是在三月中旬引进的。事实上,它被称为“部分类型提示”。太棒了!谢谢。我可能应该把你列为我的楼层项目的贡献者;-)谢谢你的额外信息!是什么样的功能让我只写
.collect::()
而不是
.collect::()
?两种方法都可以。这只是类型推断的另一种形式吗?@Christoph,是的,这是局部类型推断。据我所知,这是锈病的最新特征。@Vladimitmaveev:我不知道这是最近引入的特征,尽管我只是在过去几个月才知道它。@ChrisMorgan,这是它的拉动请求:。它是在三月中旬引进的。它实际上被称为“部分类型提示”。
fn get_variable_info (route_path: &str) -> HashMap<String, uint> {

    let mut map = HashMap::new();
    let mut i = 0;
    for matched in REGEX_VAR_SEQ.captures_iter(route_path) {
        map.insert(matched.at(1).to_string(), i);
        i = i + 1;
    }

    map
}
let mut i = 0;
REGEX_VAR_SEQ
    .captures_iter(route_path)
    .map(| matched | {
        KeyValuePair{
           key: matched.at(1).to_string(),
           value: i
        }
        i = i + 1;
        KeyValuePair
    })
    .toHashMap()