<commit_before>
macro_rules! bit_struct {
    (
        $(#[$attr:meta])*
        pub struct $struct_name:ident {
            $(pub $field_name:ident : $field_type:ty),+
        }
        deserialize($reader:ident) {
            $($field:ident : { $($tokens:tt)+ }),+
        }
    ) => (
        $(#[$attr])*
        pub struct $struct_name {
            $(pub $field_name: $field_type),+
        }
        impl ::base::Deserialize for $struct_name {
            fn deserialize($reader: &mut ::bitreader::BitReader) -> ::base::DeserializationResult<$struct_name> {
                $( bit_struct!(field $field : $reader : { $($tokens)+ } ); )+
                Ok($struct_name {
                    $($field_name: $field_name),+
                })
            }
        }<commit_msg>Use a relative bitreader in bit_struct!() macro.<commit_after>
macro_rules! bit_struct {
    (
        $(#[$attr:meta])*
        pub struct $struct_name:ident {
            $(pub $field_name:ident : $field_type:ty),+
        }
        deserialize($reader:ident) {
            $($field:ident : { $($tokens:tt)+ }),+
        }
    ) => (
        $(#[$attr])*
        pub struct $struct_name {
            $(pub $field_name: $field_type),+
        }
        impl ::base::Deserialize for $struct_name {
            fn deserialize(original_reader: &mut ::bitreader::BitReader) -> ::base::DeserializationResult<$struct_name> {
                let mut relative_reader = original_reader.relative_reader();
                let $reader = &mut relative_reader;
                $( bit_struct!(field $field : $reader : { $($tokens)+ } ); )+
                try!(original_reader.skip($reader.position() as u32));
                Ok($struct_name {
                    $($field_name: $field_name),+
                })
            }
        }
{'fraction_non_alphanumeric': 0.15993359158826784, 'fraction_numerical': 0.0011068068622025456, 'mean_word_length': 1.8517350157728707, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2169368', 'n_tokens_mistral': 540, 'n_tokens_neox': 526, 'n_words': 89}