use redis::{Client, Commands, ErrorKind, RedisError, RedisResult};
use redis_macros::{FromRedisValue, ToRedisArgs};
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Serialize, Deserialize, FromRedisValue, ToRedisArgs)]
struct Container<T> {
inner: T,
}
fn main() -> RedisResult<()> {
let client = Client::open("redis://localhost:6379")?;
let mut con = client.get_connection().map_err(|_| {
RedisError::from((
ErrorKind::InvalidClientConfig,
"Cannot connect to localhost:6379. Try starting a redis-server process or container.",
))
})?;
let container = Container {
inner: "contained".to_string(),
};
con.set::<_, _, ()>("container", &container)?;
let stored_container: Container<String> = con.get("container")?;
assert_eq!(container, stored_container);
Ok(())
}
#[test]
fn test_derive_basic() {
assert_eq!(main(), Ok(()));
}