Merge remote-tracking branch 'origin/main' into clippy-formatting
This commit is contained in:
commit
b836ba5e04
4 changed files with 122 additions and 32 deletions
|
|
@ -41,15 +41,33 @@ impl Encode for PgString {
|
|||
|
||||
impl Decode for PgString {
|
||||
fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
|
||||
let mut string = String::new();
|
||||
let mut bytes = Vec::new();
|
||||
loop {
|
||||
let byte = u8::decode(decoder)?;
|
||||
if byte == 0 {
|
||||
break;
|
||||
}
|
||||
string.push(byte as char);
|
||||
bytes.push(byte);
|
||||
}
|
||||
|
||||
let string = String::from_utf8(bytes)
|
||||
.map_err(|e| DecodeError::Utf8 { inner: e.utf8_error() })?;
|
||||
Ok(PgString(string))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::message::primitive::data::MessageData;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_encode_decode_utf8() {
|
||||
let pg_string = PgString::from("áhój jěžkó");
|
||||
let encoded = pg_string.serialize().unwrap();
|
||||
let decoded: PgString = PgString::deserialize(&encoded).unwrap();
|
||||
|
||||
let actual = decoded.as_str();
|
||||
assert_eq!("áhój jěžkó", actual);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue