有没有办法在Rust中折叠索引?

时间:2016-12-11 22:04:34

标签: indexing rust fold

在Ruby中,如果我有一个数组<!DOCTYPE html> <html> <head> <style type="text/css"> div.square { background-color: #ccc; height: 200px; width: 200px; margin: 10px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0-rc.2/angular.js"></script> <script type="text/javascript"> var app= angular.module("myApp",[]); app.controller("myCtrl",function($scope){ $scope.items= [ {value: ''} ]; $scope.addSomething= function(){ $scope.items.push({value:''}); }; }); </script> </head> <body ng-app="myApp" ng-controller="myCtrl"> <button id="button" ng-click="addSomething()">click me</button> <div ng-repeat="item in items"> <input type="text" placeholder="Headline" ng-model="item.value"> </div> <div ng-repeat="item in items"> <div class="square"> <h3>{{item.value}}</h3> </div> </div> </body> </html>并且我希望得到每个元素的总和乘以它的索引我可以做

a = [1, 2, 3, 4, 5]

在Rust中有同样的方法来做同样的事情吗?到目前为止,我有

a.each.with_index.inject(0) {|s,(i,j)| s + i*j}    

但这并没有考虑到索引,我无法找到一种方法来让它考虑索引。这是可能的,如果是的话,怎么样?

1 个答案:

答案 0 :(得分:15)

您可以使用enumerate链接它:

fn main() {
    let a = [1, 2, 3, 4, 5];
    let b = a.into_iter().enumerate().fold(0, |s, (i, j)| s + i * j);

    println!("{:?}", b); // Prints 40
}