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}