redis_args/
lib.rs

1// SPDX-FileCopyrightText: OpenTalk GmbH <mail@opentalk.eu>
2//
3// SPDX-License-Identifier: MIT OR Apache-2.0
4
5/// Can be derived by structs or enums in order to allow conversion from redis values.
6///
7/// This can be used in different variants, either using `FromStr` or the `serde` deserialization.
8///
9/// # FromStr
10///
11/// The item must implement the [`std::str::FromStr`] trait.
12///
13/// ## Example
14///
15/// ```
16/// # use redis_args::FromRedisValue;
17/// #[derive(FromRedisValue)]
18/// #[from_redis_value(FromStr)]
19/// struct IdValue {
20///    id: String,
21///    value: u32,
22///    count: usize,
23/// }
24///
25/// # impl std::str::FromStr for IdValue {
26/// #     type Err = String;
27/// #     fn from_str(s: &str)->Result<Self, Self::Err> {
28/// #         unimplemented!()
29/// #     }
30/// # }
31/// ```
32///
33// # Serde
34///
35/// Deserializes from JSON using the serde deserialization of any item. The item
36/// must derive `serde::Deserialize`.
37///
38/// ## Example
39///
40/// ```
41/// # use redis_args::FromRedisValue;
42/// # use serde::Deserialize;
43/// #[derive(FromRedisValue, Deserialize)]
44/// #[from_redis_value(serde)]
45/// struct IdValue {
46///     id: String,
47///     value: u32,
48///     count: usize,
49/// }
50/// ```
51pub use redis_args_impl::FromRedisValue;
52/// Can be derived by structs or enums in order to allow conversion to redis args.
53///
54/// This can be used in different variants, either using a format string or the `serde` serialization.
55///
56/// # Format string
57///
58/// The format string is limited to plain `{name}` arguments, no extra formatting allowed.
59/// This restriction is currently necessary, because detecting which fields should be
60/// formatted would be significantly more difficult otherwise.
61///
62/// This variant can only be used with structs, either named or anonymous.
63///
64/// ## Examples
65///
66/// ### Struct with named fields
67///
68/// ```
69/// # use redis_args::ToRedisArgs;
70/// #[derive(ToRedisArgs)]
71/// #[to_redis_args(fmt = "path:to:id={id}:with:value:{value}")]
72/// struct IdValue {
73///    id: String,
74///    value: u32,
75///    count: usize,
76/// }
77/// ```
78///
79/// ### Struct with unnamed fields
80///
81/// ```
82/// # use redis_args::ToRedisArgs;
83/// # #[macro_use] extern crate serde;
84/// #[derive(ToRedisArgs)]
85/// #[to_redis_args(fmt = "path:to:{0}:with:{1}")]
86/// struct Example(u32, String);
87/// ````
88///
89/// # Serde
90///
91/// Serializes to JSON using the serde serialization of any item. The item
92/// must derive `serde::Serialize`.
93///
94/// ## Examples
95///
96/// ```
97/// # use redis_args::ToRedisArgs;
98/// # use serde::Serialize;
99/// #[derive(ToRedisArgs, Serialize)]
100/// #[to_redis_args(serde)]
101/// struct IdValue {
102///     id: String,
103///     value: u32,
104///     count: usize,
105/// }
106/// ```
107pub use redis_args_impl::ToRedisArgs;
108
109#[doc(hidden)]
110pub mod __exports {
111    pub use redis;
112    pub use serde_json;
113}