From 585e80e4f50a84a65b311bc2a8caf0cd6b55fd34 Mon Sep 17 00:00:00 2001 From: Project Nayuki Date: Fri, 13 Sep 2019 04:03:32 +0000 Subject: [PATCH] Slightly simplified Rust code so that for-loops and lambdas capture variables as value-copy instead of reference. --- rust/src/lib.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 9d6ad62..1c38e41 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -227,9 +227,9 @@ impl QrCode { }; // Increase the error correction level while the data still fits in the current version number - for newecl in &[QrCodeEcc::Medium, QrCodeEcc::Quartile, QrCodeEcc::High] { // From low to high - if boostecl && datausedbits <= QrCode::get_num_data_codewords(version, *newecl) * 8 { - ecl = *newecl; + for &newecl in &[QrCodeEcc::Medium, QrCodeEcc::Quartile, QrCodeEcc::High] { // From low to high + if boostecl && datausedbits <= QrCode::get_num_data_codewords(version, newecl) * 8 { + ecl = newecl; } } @@ -252,17 +252,17 @@ impl QrCode { assert_eq!(bb.0.len() % 8, 0, "Assertion error"); // Pad with alternating bytes until data capacity is reached - for padbyte in [0xEC, 0x11].iter().cycle() { + for &padbyte in [0xEC, 0x11].iter().cycle() { if bb.0.len() >= datacapacitybits { break; } - bb.append_bits(*padbyte, 8); + bb.append_bits(padbyte, 8); } // Pack bits into bytes in big endian let mut datacodewords = vec![0u8; bb.0.len() / 8]; - for (i, bit) in bb.0.iter().enumerate() { - datacodewords[i >> 3] |= u8::from(*bit) << (7 - (i & 7)); + for (i, &bit) in bb.0.iter().enumerate() { + datacodewords[i >> 3] |= u8::from(bit) << (7 - (i & 7)); } // Create the QR Code object @@ -806,8 +806,8 @@ impl QrCode { for b in data { // Polynomial division let factor: u8 = b ^ result.remove(0); result.push(0); - for (x, y) in result.iter_mut().zip(divisor.iter()) { - *x ^= QrCode::reed_solomon_multiply(*y, factor); + for (x, &y) in result.iter_mut().zip(divisor.iter()) { + *x ^= QrCode::reed_solomon_multiply(y, factor); } } result @@ -984,8 +984,8 @@ impl QrSegment { /// Any text string can be converted to UTF-8 bytes and encoded as a byte mode segment. pub fn make_bytes(data: &[u8]) -> Self { let mut bb = BitBuffer(Vec::with_capacity(data.len() * 8)); - for b in data { - bb.append_bits(u32::from(*b), 8); + for &b in data { + bb.append_bits(u32::from(b), 8); } QrSegment::new(QrSegmentMode::Byte, data.len(), bb.0) } @@ -998,9 +998,9 @@ impl QrSegment { let mut bb = BitBuffer(Vec::with_capacity(text.len() * 3 + (text.len() + 2) / 3)); let mut accumdata: u32 = 0; let mut accumcount: u8 = 0; - for c in text { - assert!('0' <= *c && *c <= '9', "String contains non-numeric characters"); - accumdata = accumdata * 10 + ((*c as u32) - ('0' as u32)); + for &c in text { + assert!('0' <= c && c <= '9', "String contains non-numeric characters"); + accumdata = accumdata * 10 + ((c as u32) - ('0' as u32)); accumcount += 1; if accumcount == 3 { bb.append_bits(accumdata, 10); @@ -1025,8 +1025,8 @@ impl QrSegment { let mut bb = BitBuffer(Vec::with_capacity(text.len() * 5 + (text.len() + 1) / 2)); let mut accumdata: u32 = 0; let mut accumcount: u32 = 0; - for c in text { - let i = ALPHANUMERIC_CHARSET.iter().position(|x| *x == *c) + for &c in text { + let i = ALPHANUMERIC_CHARSET.iter().position(|&x| x == c) .expect("String contains unencodable characters in alphanumeric mode"); accumdata = accumdata * 45 + (i as u32); accumcount += 1; @@ -1140,7 +1140,7 @@ impl QrSegment { // Tests whether the given string can be encoded as a segment in numeric mode. // A string is encodable iff each character is in the range 0 to 9. fn is_numeric(text: &[char]) -> bool { - text.iter().all(|c| '0' <= *c && *c <= '9') + text.iter().all(|&c| '0' <= c && c <= '9') } }