Currently a rust project uses serde_json for encoding protocol messages which is useful for logging but I need to use serde_cbor for encoding messages (while logging will still use serde_json). I am not sure how do I proceed with this.
So far I have included serde_cbor in Cargo.toml and I am doing it like this:
Old:
line = line.trim_end().to_string();
let message: TakerToMakerMessage = serde_json::from_str(&line).unwrap();
log::info!("[{}] <=== {} ", maker_clone.config.port, message);
Now:
line = line.trim_end().to_string();
let message: TakerToMakerMessage = serde_cbor::from_slice(line.as_bytes()).unwrap();
log::info!("[{}] <=== {} ", maker_clone.config.port, message);
Old:
let message: MakerToTakerMessage = serde_json::from_str(&line)?;
log::debug!("<== {:#?}", message);
Ok(message)
Now:
let message: MakerToTakerMessage = serde_cbor::from_slice(line.trim().as_bytes())?;
log::debug!("<== {:#?}", message);
Ok(message)
Am I migrating it right? Because some tests are now failing (if someone needs some context: here is my commit)
In the logs, I have many
Custom { kind: InvalidData, error: "stream did not contain valid UTF-8" }
Thanks a lot and happy new year!