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