diff --git a/src/bits.rs b/src/bits.rs index 891f677..b798f35 100644 --- a/src/bits.rs +++ b/src/bits.rs @@ -758,7 +758,7 @@ impl Bits { where I: Iterator { for segment in segments_iter { - let slice = data.slice(segment.begin, segment.end); + let slice = &data[segment.begin .. segment.end]; try!(match segment.mode { Mode::Numeric => self.push_numeric_data(slice), Mode::Alphanumeric => self.push_alphanumeric_data(slice), diff --git a/src/canvas.rs b/src/canvas.rs index ec1f5d1..47bcd3e 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -20,7 +20,7 @@ use types::{Version, EcLevel}; //{{{ Modules /// The color of a module (pixel) in the QR code. -#[derive(PartialEq, Eq, Clone, Copy, Show)] +#[derive(PartialEq, Eq, Clone, Copy, Debug)] pub enum Module { /// The module is empty. Empty, @@ -177,8 +177,8 @@ mod basic_canvas_tests { fn test_debug_str() { let mut c = Canvas::new(Version::Normal(1), EcLevel::L); - for i in 3 .. 20 { - for j in 3 .. 20 { + for i in 3i16 .. 20 { + for j in 3i16 .. 20 { c.put(i, j, match ((i * 3) ^ j) % 5 { 0 => Module::Empty, 1 => Module::Light, @@ -1372,7 +1372,7 @@ mod draw_codewords_test { /// The mask patterns. Since QR code and Micro QR code do not use the same /// pattern number, we name them according to their shape instead of the number. -#[derive(Show, Copy)] +#[derive(Debug, Copy)] pub enum MaskPattern { /// QR code pattern 000: `(x + y) % 2 == 0`. Checkerboard = 0b000, @@ -1811,7 +1811,7 @@ mod penalty_tests { ]; let mut c = Canvas::new(Version::Micro(4), EcLevel::Q); - for i in 0 .. 17 { + for i in 0i16 .. 17 { c.put(i, -1, HORIZONTAL_SIDE[i as usize]); c.put(-1, i, VERTICAL_SIDE[i as usize]); } diff --git a/src/ec.rs b/src/ec.rs index 5249744..3cf5234 100644 --- a/src/ec.rs +++ b/src/ec.rs @@ -31,7 +31,7 @@ pub fn create_error_correction_code(data: &[u8], ec_code_size: usize) -> Vec } let log_lead_coeff = LOG_TABLE[lead_coeff] as usize; - for (u, v) in res.slice_from_mut(i+1).iter_mut().zip(log_den.iter()) { + for (u, v) in res[i+1 ..].iter_mut().zip(log_den.iter()) { *u ^= EXP_TABLE[((*v as usize + log_lead_coeff) % 255) as usize]; } } diff --git a/src/optimize.rs b/src/optimize.rs index c0d20ad..c67af38 100644 --- a/src/optimize.rs +++ b/src/optimize.rs @@ -11,7 +11,7 @@ use test::Bencher; //{{{ Segment /// A segment of data committed to an encoding mode. -#[derive(PartialEq, Eq, Show, Copy, Clone)] +#[derive(PartialEq, Eq, Debug, Copy, Clone)] pub struct Segment { /// The encoding mode of the segment of data. pub mode: Mode, diff --git a/src/types.rs b/src/types.rs index c03c2d4..c2bcba8 100644 --- a/src/types.rs +++ b/src/types.rs @@ -2,13 +2,14 @@ use std::default::Default; use std::cmp::{PartialOrd, Ordering}; +use std::fmt::{Display, Formatter, Error}; //------------------------------------------------------------------------------ //{{{ QrResult /// `QrError` encodes the error encountered when generating a QR code. #[unstable] -#[derive(Show, PartialEq, Eq, Copy, Clone)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum QrError { /// The data is too long to encode into a QR code for the given version. DataTooLong, @@ -28,6 +29,19 @@ pub enum QrError { InvalidCharacter, } +impl Display for QrError { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + let msg = match *self { + QrError::DataTooLong => "data too long", + QrError::InvalidVersion => "invalid version", + QrError::UnsupportedCharacterSet => "unsupported character set", + QrError::InvalidEciDesignator => "invalid ECI designator", + QrError::InvalidCharacter => "invalid character", + }; + fmt.write_str(msg) + } +} + /// `QrResult` is a convenient alias for a QR code generation result. #[stable] pub type QrResult = Result; @@ -38,7 +52,7 @@ pub type QrResult = Result; /// The error correction level. It allows the original information be recovered /// even if parts of the code is damaged. -#[derive(Show, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] #[unstable] pub enum EcLevel { /// Low error correction. Allows up to 7% of wrong blocks. @@ -65,7 +79,7 @@ pub enum EcLevel { /// The smallest version is `Version::Normal(1)` of size 21×21, and the largest /// is `Version::Normal(40)` of size 177×177. #[unstable] -#[derive(Show, PartialEq, Eq, Copy, Clone)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum Version { /// A normal QR code version. The parameter should be between 1 and 40. Normal(i16), @@ -138,7 +152,7 @@ impl Version { /// The mode indicator, which specifies the character set of the encoded data. #[unstable] -#[derive(Show, PartialEq, Eq, Copy, Clone)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum Mode { /// The data contains only characters 0 to 9. Numeric,