From a6c142d1d5b8221c979f11fa06974a9c28ac9f80 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 30 Jan 2024 22:21:18 -0800 Subject: [PATCH] Make decoding consume the record --- rust/src/raw.rs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/rust/src/raw.rs b/rust/src/raw.rs index 0250520afc..bbe2b46d36 100644 --- a/rust/src/raw.rs +++ b/rust/src/raw.rs @@ -287,7 +287,7 @@ impl Record { } } - pub fn decode(&self, decoder: &Decoder) -> Result { + pub fn decode(self, decoder: &Decoder) -> Result { Ok(match self { Record::Header(record) => record.decode(decoder), Record::Variable(record) => record.decode(decoder), @@ -307,7 +307,7 @@ impl Record { Record::NumberOfCases(record) => DecodedRecord::NumberOfCases(record.clone()), Record::Text(record) => record.decode(decoder), Record::OtherExtension(record) => DecodedRecord::OtherExtension(record.clone()), - Record::EndOfHeaders(record) => DecodedRecord::EndOfHeaders(*record), + Record::EndOfHeaders(record) => DecodedRecord::EndOfHeaders(record), Record::ZHeader(record) => DecodedRecord::ZHeader(record.clone()), Record::ZTrailer(record) => DecodedRecord::ZTrailer(record.clone()), Record::Cases(record) => DecodedRecord::Cases(record.clone()), @@ -495,7 +495,7 @@ impl HeaderRecord { }) } - pub fn decode(&self, decoder: &Decoder) -> DecodedRecord { + pub fn decode(self, decoder: &Decoder) -> DecodedRecord { let eye_catcher = decoder.decode(&self.eye_catcher).to_string(); let file_label = decoder.decode(&self.file_label).to_string(); let creation_date = decoder.decode(&self.creation_date).to_string(); @@ -823,9 +823,9 @@ impl RawValue { Ok(Some(values)) } - fn decode(&self, decoder: &Decoder) -> Value { + fn decode(self, decoder: &Decoder) -> Value { match self { - Self::Number(x) => Value::Number(*x), + Self::Number(x) => Value::Number(x), Self::String(s) => Value::String(decoder.decode_exact_length(&s.0).into()), } } @@ -1342,7 +1342,7 @@ impl VariableRecord> { })) } - pub fn decode(&self, decoder: &Decoder) -> DecodedRecord { + pub fn decode(self, decoder: &Decoder) -> DecodedRecord { DecodedRecord::Variable(VariableRecord { offsets: self.offsets.clone(), width: self.width, @@ -1596,7 +1596,7 @@ impl ValueLabelRecord, RawString> { }))) } - fn decode(&self, decoder: &Decoder) -> ValueLabelRecord, String> { + fn decode(self, decoder: &Decoder) -> ValueLabelRecord, String> { let labels = self .labels .iter() @@ -1659,7 +1659,7 @@ impl DocumentRecord { } } - pub fn decode(&self, decoder: &Decoder) -> DecodedRecord { + pub fn decode(self, decoder: &Decoder) -> DecodedRecord { DecodedRecord::Document(DocumentRecord { offsets: self.offsets.clone(), lines: self @@ -1906,7 +1906,7 @@ impl ExtensionRecord for MultipleResponseRecord { } impl MultipleResponseRecord { - fn decode(&self, decoder: &Decoder) -> DecodedRecord { + fn decode(self, decoder: &Decoder) -> DecodedRecord { let mut sets = Vec::new(); for set in self.0.iter() { if let Some(set) = set.decode(decoder).issue_warning(&decoder.warn) { @@ -2129,7 +2129,7 @@ impl ExtensionRecord for LongStringMissingValueRecord> { } impl LongStringMissingValueRecord> { - pub fn decode(&self, decoder: &Decoder) -> LongStringMissingValueRecord { + pub fn decode(self, decoder: &Decoder) -> LongStringMissingValueRecord { let mut mvs = Vec::with_capacity(self.0.len()); for mv in self.0.iter() { if let Some(mv) = mv @@ -2219,25 +2219,25 @@ impl TextRecord { text: extension.data.into(), } } - pub fn decode(&self, decoder: &Decoder) -> DecodedRecord { + pub fn decode(self, decoder: &Decoder) -> DecodedRecord { match self.rec_type { TextRecordType::VariableSets => { - DecodedRecord::VariableSets(VariableSetRecord::decode(self, decoder)) + DecodedRecord::VariableSets(VariableSetRecord::decode(&self, decoder)) } TextRecordType::ProductInfo => { - DecodedRecord::ProductInfo(ProductInfoRecord::decode(self, decoder)) + DecodedRecord::ProductInfo(ProductInfoRecord::decode(&self, decoder)) } TextRecordType::LongNames => { - DecodedRecord::LongNames(LongNamesRecord::decode(self, decoder)) + DecodedRecord::LongNames(LongNamesRecord::decode(&self, decoder)) } TextRecordType::VeryLongStrings => { - DecodedRecord::VeryLongStrings(VeryLongStringsRecord::decode(self, decoder)) + DecodedRecord::VeryLongStrings(VeryLongStringsRecord::decode(&self, decoder)) } TextRecordType::FileAttributes => { - DecodedRecord::FileAttributes(FileAttributeRecord::decode(self, decoder)) + DecodedRecord::FileAttributes(FileAttributeRecord::decode(&self, decoder)) } TextRecordType::VariableAttributes => { - DecodedRecord::VariableAttributes(VariableAttributeRecord::decode(self, decoder)) + DecodedRecord::VariableAttributes(VariableAttributeRecord::decode(&self, decoder)) } } } @@ -2863,7 +2863,7 @@ impl ExtensionRecord for LongStringValueLabelRecord { } impl LongStringValueLabelRecord { - fn decode(&self, decoder: &Decoder) -> LongStringValueLabelRecord { + fn decode(self, decoder: &Decoder) -> LongStringValueLabelRecord { let mut labels = Vec::with_capacity(self.0.len()); for label in &self.0 { match label.decode(decoder) { -- 2.30.2