sqlx_core_oldapi/mysql/types/
decimal.rs1use rust_decimal::Decimal;
2
3use crate::decode::Decode;
4use crate::encode::{Encode, IsNull};
5use crate::error::BoxDynError;
6use crate::mysql::io::MySqlBufMutExt;
7use crate::mysql::protocol::text::ColumnType;
8use crate::mysql::{MySql, MySqlTypeInfo, MySqlValueRef};
9use crate::types::Type;
10
11impl Type<MySql> for Decimal {
12 fn type_info() -> MySqlTypeInfo {
13 MySqlTypeInfo::binary(ColumnType::NewDecimal)
14 }
15}
16
17impl Encode<'_, MySql> for Decimal {
18 fn encode_by_ref(&self, buf: &mut Vec<u8>) -> IsNull {
19 buf.put_str_lenenc(&self.to_string());
20
21 IsNull::No
22 }
23}
24
25impl Decode<'_, MySql> for Decimal {
26 fn decode(value: MySqlValueRef<'_>) -> Result<Self, BoxDynError> {
27 Ok(value.as_str()?.parse()?)
28 }
29}