Lines Matching refs:bytes

1 /// Find and parse sign and get remaining bytes.
3 fn parse_sign<'a>(bytes: &'a [u8]) -> (bool, &'a [u8]) {
4 match bytes.get(0) {
5 Some(&b'+') => (true, &bytes[1..]),
6 Some(&b'-') => (false, &bytes[1..]),
7 _ => (true, bytes),
56 fn ltrim_zero<'a>(bytes: &'a [u8]) -> &'a [u8] {
57 let count = bytes.iter().take_while(|&&si| si == b'0').count();
58 &bytes[count..]
63 fn rtrim_zero<'a>(bytes: &'a [u8]) -> &'a [u8] {
64 let count = bytes.iter().rev().take_while(|&&si| si == b'0').count();
65 let index = bytes.len() - count;
66 &bytes[..index]
127 /// Parse float from input bytes, returning the float and the remaining bytes.
129 /// * `bytes` - Array of bytes leading with float-data.
130 pub fn parse_float<'a, F>(bytes: &'a [u8]) -> (F, &'a [u8])
134 let start = bytes;
137 let (is_positive, bytes) = parse_sign(bytes);
140 if case_insensitive_starts_with(bytes.iter(), b"NaN".iter()) {
145 return (float, &bytes[3..]);
146 } else if case_insensitive_starts_with(bytes.iter(), b"Infinity".iter()) {
151 return (float, &bytes[8..]);
152 } else if case_insensitive_starts_with(bytes.iter(), b"inf".iter()) {
157 return (float, &bytes[3..]);
164 let (integer_slc, bytes) = consume_digits(bytes);
165 let (fraction_slc, bytes) = match bytes.first() {
166 Some(&b'.') => consume_digits(&bytes[1..]),
167 _ => (&bytes[..0], bytes),
169 let (exponent, bytes) = match bytes.first() {
172 let (is_positive, bytes) = parse_sign(&bytes[1..]);
173 let (exponent, bytes) = consume_digits(bytes);
174 (parse_exponent(exponent, is_positive), bytes)
176 _ => (0, bytes),
179 if bytes.len() == start.len() {
180 return (F::from_u64(0), bytes);
205 (float, bytes)