aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Sacchini <joey@sacchini.net>2020-10-20 18:49:58 -0400
committerJoey Sacchini <joey@sacchini.net>2020-10-20 18:49:58 -0400
commitc77e4e82a28e1766eadb5096c38c31df69fcc84e (patch)
treea8a36a82b38897f81827670e6daca414af289324
parentbf1e33fcd4cef4acb829f03f0d6b203b45557d77 (diff)
downloadmcproto-rs-c77e4e82a28e1766eadb5096c38c31df69fcc84e.tar.gz
mcproto-rs-c77e4e82a28e1766eadb5096c38c31df69fcc84e.tar.bz2
mcproto-rs-c77e4e82a28e1766eadb5096c38c31df69fcc84e.zip
Make mc_serialize_body it's own member of Packet trait instead of using Serialize
-rw-r--r--src/protocol.rs10
-rw-r--r--src/test_macros.rs8
2 files changed, 9 insertions, 9 deletions
diff --git a/src/protocol.rs b/src/protocol.rs
index eb903b5..7a13175 100644
--- a/src/protocol.rs
+++ b/src/protocol.rs
@@ -42,7 +42,7 @@ impl State {
pub struct Id {
pub id: i32,
pub state: State,
- pub direction: PacketDirection
+ pub direction: PacketDirection,
}
impl Serialize for Id {
@@ -87,12 +87,14 @@ pub struct ProtocolPacketField {
pub kind: String,
}
-pub trait Packet: Serialize {
+pub trait Packet: Sized {
fn id(&self) -> Id;
fn version() -> crate::types::VarInt;
fn mc_deserialize(raw: RawPacket<'_>) -> Result<Self, PacketErr>;
+
+ fn mc_serialize_body<S>(&self, to: &mut S) -> SerializeResult where S: Serializer;
}
pub enum PacketErr {
@@ -284,10 +286,8 @@ macro_rules! define_protocol {
other => Err(UnknownId(other.into())),
}
}
- }
- impl crate::Serialize for $packett {
- fn mc_serialize<S: crate::Serializer>(&self, to: &mut S) -> crate::SerializeResult {
+ fn mc_serialize_body<S>(&self, to: &mut S) -> crate::SerializeResult where S: crate::Serializer {
use self::$packett::*;
match self {
$($nam(body) => to.serialize_other(body)),+
diff --git a/src/test_macros.rs b/src/test_macros.rs
index 1eeddb9..9caded5 100644
--- a/src/test_macros.rs
+++ b/src/test_macros.rs
@@ -10,7 +10,7 @@ macro_rules! packet_test_cases {
println!("{:?}", packet);
}
let mut out = BytesSerializer::default();
- packet.mc_serialize(&mut out).expect("serialize succeeds");
+ packet.mc_serialize_body(&mut out).expect("serialize succeeds");
let bytes = out.into_bytes();
let raw_packet = RawPacket {
@@ -36,14 +36,14 @@ macro_rules! packet_test_cases {
let packet = $pnam::$varnam($bodnam::test_gen_random());
let mut serializer = BenchSerializer::default();
packet
- .mc_serialize(&mut serializer)
+ .mc_serialize_body(&mut serializer)
.expect("serialize succeeds");
b.bytes = serializer.len() as u64;
serializer.reset();
b.iter(|| {
packet
- .mc_serialize(&mut serializer)
+ .mc_serialize_body(&mut serializer)
.expect("serialize succeeds");
serializer.reset();
})
@@ -55,7 +55,7 @@ macro_rules! packet_test_cases {
let packet = $pnam::$varnam($bodnam::test_gen_random());
let mut serializer = BytesSerializer::default();
packet
- .mc_serialize(&mut serializer)
+ .mc_serialize_body(&mut serializer)
.expect("serialize succeeds");
let bytes = serializer.into_bytes();