|
@@ -1,14 +1,13 @@
|
|
|
-use binrw::{binread, binwrite, BinRead, BinWrite};
|
|
|
+use binrw::{BinRead, BinWrite, binrw};
|
|
|
use std::{mem::size_of, ops::{DerefMut, Deref}};
|
|
|
|
|
|
/// Wrapper to prefix arbitrary structs with size of struct as u32
|
|
|
-#[binwrite]
|
|
|
-#[binread]
|
|
|
+#[binrw]
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
pub struct FieldOf<T>
|
|
|
where
|
|
|
- T: for<'a> BinRead<Args<'a> = ()> + Default,
|
|
|
- T: for<'a> BinWrite<Args<'a> = ()> + Default,
|
|
|
+ T: for<'a> BinRead<Args<'a> = ()>,
|
|
|
+ T: for<'a> BinWrite<Args<'a> = ()>,
|
|
|
{
|
|
|
// Temporary variable that must match size of value
|
|
|
#[br(temp, assert(size == size_of::<T>().try_into().unwrap()))]
|
|
@@ -20,8 +19,8 @@ where
|
|
|
|
|
|
impl<T> Deref for FieldOf<T>
|
|
|
where
|
|
|
- T: for<'a> BinRead<Args<'a> = ()> + Default,
|
|
|
- T: for<'a> BinWrite<Args<'a> = ()> + Default,
|
|
|
+ T: for<'a> BinRead<Args<'a> = ()>,
|
|
|
+ T: for<'a> BinWrite<Args<'a> = ()>,
|
|
|
{
|
|
|
type Target = T;
|
|
|
|
|
@@ -32,8 +31,8 @@ where
|
|
|
|
|
|
impl<T> DerefMut for FieldOf<T>
|
|
|
where
|
|
|
- T: for<'a> BinRead<Args<'a> = ()> + Default,
|
|
|
- T: for<'a> BinWrite<Args<'a> = ()> + Default,
|
|
|
+ T: for<'a> BinRead<Args<'a> = ()>,
|
|
|
+ T: for<'a> BinWrite<Args<'a> = ()>,
|
|
|
{
|
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
|
&mut self.value
|