diff options
author | Joey Sacchini <joey@sacchini.net> | 2020-10-02 12:46:46 -0400 |
---|---|---|
committer | Joey Sacchini <joey@sacchini.net> | 2020-10-02 12:46:46 -0400 |
commit | 9b9aa681d3bcf41a22291dff5d243b5fbb108339 (patch) | |
tree | 08ee19d486f2b444ac25b462c01ce32679dc0c15 /src | |
parent | b3e6c71ddcd554e0ef350b93feda8a8eb0de76ab (diff) | |
download | mcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.tar.gz mcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.tar.bz2 mcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.zip |
fix random generation and make raw packet accept a borrowed slice
Diffstat (limited to 'src')
-rw-r--r-- | src/nbt.rs | 7 | ||||
-rw-r--r-- | src/protocol.rs | 8 | ||||
-rw-r--r-- | src/test_macros.rs | 4 | ||||
-rw-r--r-- | src/v1_15_2.rs | 4 |
4 files changed, 13 insertions, 10 deletions
@@ -30,8 +30,11 @@ impl NamedTag { impl TestRandom for NamedTag { fn test_gen_random() -> Self { Self { - name: String::test_gen_random(), - payload: Tag::test_gen_random(), + name: "".to_owned(), + payload: Tag::Compound(vec!(Self{ + name: String::test_gen_random(), + payload: Tag::test_gen_random(), + })), } } } diff --git a/src/protocol.rs b/src/protocol.rs index d3a9af0..98b9740 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -30,7 +30,7 @@ impl<T: Clone + fmt::Debug + PartialEq + Serialize> PacketIdentifier for T {} pub trait Packet<I: PacketIdentifier>: Serialize { fn id(&self) -> I; - fn mc_deserialize(raw: RawPacket<I>) -> Result<Self, PacketErr>; + fn mc_deserialize(raw: RawPacket<'_, I>) -> Result<Self, PacketErr>; } pub enum PacketErr { @@ -57,9 +57,9 @@ impl fmt::Debug for PacketErr { impl std::error::Error for PacketErr {} #[derive(Debug, Clone, PartialEq)] -pub struct RawPacket<I> { +pub struct RawPacket<'a, I> { pub id: I, - pub data: Vec<u8>, + pub data: &'a[u8], } pub trait ProtocolType: Serialize + Deserialize {} @@ -200,7 +200,7 @@ macro_rules! define_protocol { use crate::Deserialize; let id = raw.id; - let data = raw.data.as_slice(); + let data = raw.data; match (id.id, id.state, id.direction) { $(($id, $state, $direction) => Ok($nam($body::mc_deserialize(data).map_err(DeserializeFailed)?.value))),*, diff --git a/src/test_macros.rs b/src/test_macros.rs index d8fc76b..a530c3e 100644 --- a/src/test_macros.rs +++ b/src/test_macros.rs @@ -13,7 +13,7 @@ macro_rules! packet_test_cases { let raw_packet = RawPacket { id: packet.id(), - data: bytes, + data: bytes.as_slice(), }; let deserialized = @@ -52,7 +52,7 @@ macro_rules! packet_test_cases { b.bytes = bytes.len() as u64; let raw_packet = RawPacket { id: packet.id(), - data: bytes, + data: bytes.as_slice(), }; b.iter(|| { $pnam::mc_deserialize(raw_packet.clone()).expect("deserialize succeeds"); diff --git a/src/v1_15_2.rs b/src/v1_15_2.rs index df31dab..8c6246b 100644 --- a/src/v1_15_2.rs +++ b/src/v1_15_2.rs @@ -1053,8 +1053,8 @@ impl Deserialize for BlockChangeHorizontalPosition { impl TestRandom for BlockChangeHorizontalPosition { fn test_gen_random() -> Self { BlockChangeHorizontalPosition { - rel_x: rand::random(), - rel_z: rand::random(), + rel_x: rand::random::<u8>() % 16, + rel_z: rand::random::<u8>() % 16, } } } |