welds_sqlx_mssql/types/
mod.rs1use crate::encode::{Encode, IsNull};
2use crate::protocol::type_info::{DataType, TypeInfo};
3use crate::{Mssql, MssqlTypeInfo};
4
5mod bool;
6mod float;
7mod int;
8mod str;
9mod uint;
10
11impl<'q, T: 'q + Encode<'q, Mssql>> Encode<'q, Mssql> for Option<T> {
12 fn encode(self, buf: &mut Vec<u8>) -> IsNull {
13 if let Some(v) = self {
14 v.encode(buf)
15 } else {
16 IsNull::Yes
17 }
18 }
19
20 fn encode_by_ref(&self, buf: &mut Vec<u8>) -> IsNull {
21 if let Some(v) = self {
22 v.encode_by_ref(buf)
23 } else {
24 IsNull::Yes
25 }
26 }
27
28 fn produces(&self) -> Option<MssqlTypeInfo> {
29 if let Some(v) = self {
30 v.produces()
31 } else {
32 Some(MssqlTypeInfo(TypeInfo::new(DataType::Null, 0)))
34 }
35 }
36
37 fn size_hint(&self) -> usize {
38 self.as_ref().map_or(0, Encode::size_hint)
39 }
40}