async_proto/impls/
rust_decimal.rs

1use {
2    rust_decimal::Decimal,
3    async_proto_derive::impl_protocol_for,
4    crate::Protocol,
5};
6
7#[derive(Protocol)]
8#[async_proto(internal)]
9struct DecimalProxy([u8; 16]);
10
11impl From<DecimalProxy> for Decimal {
12    fn from(DecimalProxy(bytes): DecimalProxy) -> Self {
13        Self::deserialize(bytes)
14    }
15}
16
17impl<'a> From<&'a Decimal> for DecimalProxy {
18    fn from(value: &'a Decimal) -> Self {
19        Self(value.serialize())
20    }
21}
22
23impl_protocol_for! {
24    #[async_proto(attr(cfg_attr(docsrs, doc(cfg(feature = "rust_decimal")))))]
25    #[async_proto(via = DecimalProxy)]
26    type Decimal;
27}