Skip to content

Commit 1551159

Browse files
committed
Get rid of extra Vec
1 parent d0a3909 commit 1551159

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

examples/hello.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::iter;
12
use std::ffi::CString;
23

34
//#[macro_use]
@@ -10,28 +11,27 @@ fn hello_mul(_: &Context, args: Vec<String>) -> RedisResult {
1011
return Err(RedisError::WrongArity);
1112
}
1213

13-
let maybe_nums: Vec<_> = args
14-
.into_iter()
15-
.skip(1) // The command itself
16-
.map(parse_integer)
17-
.collect();
18-
1914
let mut nums = vec![];
20-
for n in maybe_nums {
21-
nums.push(n?);
15+
16+
for arg in args.into_iter().skip(1) {
17+
nums.push(parse_integer(&arg)?);
2218
}
2319

24-
nums.push(nums.iter().product());
20+
let product = nums.iter().product();
2521

26-
return Ok(RedisValue::Array(nums
22+
let results = nums
2723
.into_iter()
28-
.map(RedisValue::Integer)
29-
.collect()));
24+
.chain(iter::once(product));
25+
26+
return Ok(RedisValue::Array(
27+
results
28+
.map(RedisValue::Integer)
29+
.collect()));
3030
}
3131

3232
//////////////////////////////////////////////////////
3333

34-
fn parse_integer(arg: String) -> Result<i64, RedisError> {
34+
fn parse_integer(arg: &str) -> Result<i64, RedisError> {
3535
arg.parse::<i64>()
3636
.map_err(|_| RedisError::String(format!("Couldn't parse as integer: {}", arg)))
3737
}

0 commit comments

Comments
 (0)