diff --git a/src/resp/to_args.rs b/src/resp/to_args.rs index e157d6e..613a05a 100644 --- a/src/resp/to_args.rs +++ b/src/resp/to_args.rs @@ -452,6 +452,8 @@ impl SingleArgCollection> for CommandArgs {} impl SingleArgCollection for [T; N] where T: SingleArg {} +impl SingleArgCollection for &[T] where T: SingleArg {} + impl SingleArgCollection for Vec where T: SingleArg {} impl SingleArgCollection for SmallVec @@ -499,6 +501,13 @@ where { } +impl KeyValueArgsCollection for &[(K, V)] +where + K: SingleArg, + V: SingleArg, +{ +} + impl KeyValueArgsCollection for (K, V) where K: SingleArg, diff --git a/src/tests/command_args.rs b/src/tests/command_args.rs index adb017b..d550e5c 100644 --- a/src/tests/command_args.rs +++ b/src/tests/command_args.rs @@ -37,6 +37,11 @@ async fn key_value_collection() -> Result<()> { let len = client.hset("key", items).await?; assert_eq!(2, len); + client.del("key").await?; + let items = [("field1", "value1"), ("field2", "value2")]; + let len = client.hset("key", items.as_slice()).await?; + assert_eq!(2, len); + client.close().await?; Ok(()) @@ -58,6 +63,11 @@ async fn set_collection() -> Result<()> { let len = client.sadd("key", items).await?; assert_eq!(2, len); + client.del("key").await?; + let items = ["member1", "member2"]; + let len = client.sadd("key", items.as_slice()).await?; + assert_eq!(2, len); + client.del("key").await?; let items = vec!["member1", "member2"]; let len = client.sadd("key", items).await?;