Skip to content

Commit d0a3909

Browse files
committed
Map values with an iter
1 parent 26310cb commit d0a3909

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

examples/hello.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,37 @@
11
use std::ffi::CString;
22

3-
#[macro_use]
3+
//#[macro_use]
44
extern crate redismodule;
5+
56
use redismodule::{Context, Command, RedisResult, RedisValue, RedisError};
67

78
fn hello_mul(_: &Context, args: Vec<String>) -> RedisResult {
8-
if args.len() != 3 {
9+
if args.len() < 3 {
910
return Err(RedisError::WrongArity);
1011
}
1112

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

15-
let result = m1 * m2;
24+
nums.push(nums.iter().product());
1625

17-
return Ok(RedisValue::Array(
18-
vec![m1, m2, result]
19-
.into_iter()
20-
.map(|v| RedisValue::Integer(v))
21-
.collect()));
26+
return Ok(RedisValue::Array(nums
27+
.into_iter()
28+
.map(RedisValue::Integer)
29+
.collect()));
2230
}
2331

2432
//////////////////////////////////////////////////////
2533

26-
fn parse_integer(arg: &str) -> Result<i64, RedisError> {
34+
fn parse_integer(arg: String) -> Result<i64, RedisError> {
2735
arg.parse::<i64>()
2836
.map_err(|_| RedisError::String(format!("Couldn't parse as integer: {}", arg)))
2937
}
@@ -33,8 +41,8 @@ fn parse_integer(arg: &str) -> Result<i64, RedisError> {
3341
const MODULE_NAME: &str = "hello";
3442
const MODULE_VERSION: u32 = 1;
3543

44+
/*
3645
redis_module!(MODULE_NAME, MODULE_VERSION, [
3746
Command::new("hello.mul", hello_mul, "write"),
3847
]);
39-
40-
48+
*/

0 commit comments

Comments
 (0)