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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
use std::str; use byteorder::LittleEndian; use crate::decode::{Decode, DecodeError}; use crate::encode::Encode; use crate::mysql::io::{BufExt, BufMutExt}; use crate::mysql::protocol::Type; use crate::mysql::types::MySqlTypeMetadata; use crate::mysql::MySql; use crate::types::HasSqlType; impl HasSqlType<str> for MySql { fn metadata() -> MySqlTypeMetadata { MySqlTypeMetadata::new(Type::VAR_STRING) } } impl Encode<MySql> for str { fn encode(&self, buf: &mut Vec<u8>) { buf.put_str_lenenc::<LittleEndian>(self); } } impl HasSqlType<String> for MySql { fn metadata() -> MySqlTypeMetadata { <MySql as HasSqlType<&str>>::metadata() } } impl Encode<MySql> for String { fn encode(&self, buf: &mut Vec<u8>) { <str as Encode<MySql>>::encode(self.as_str(), buf) } } impl Decode<MySql> for String { fn decode(mut buf: &[u8]) -> Result<Self, DecodeError> { Ok(buf .get_str_lenenc::<LittleEndian>()? .unwrap_or_default() .to_owned()) } }