Closed
Description
The following code:
use nom::{IResult, not_line_ending, line_ending};
fn csv_line(input: &[u8]) -> IResult<&[u8], Vec<&[u8]>> {
terminated!(input, separated_list!(filter!(apply!(check_characters, b"\n\r,")), not_line_ending), line_ending)
}
fn check_characters(data: &[u8], characters: &[u8]) -> bool {
for i in 0..data.len() {
for c in characters {
if data[i] == *c {
return false;
}
}
}
true
}
#[test]
fn check_file() {
let f = b"nom,age\ncarles,30\nlaure,28";
csv_line(f);
}
which gives the following error (and ICE):
<nom macros>:15:56: 5:48 error: mismatched types:
expected `&[u8]`,
found `u8`
(expected &-ptr,
found u8) [E0308]
(internal compiler error: unprintable span)
<nom macros>:1:1: 13:71 note: in expansion of apply!
<nom macros>:5:20: 5:67 note: expansion site
note: in expansion of for loop expansion
<nom macros>:3:45: 6:27 note: expansion site
<nom macros>:1:1: 12:79 note: in expansion of filter!
<nom macros>:15:46: 16:2 note: expansion site
note: in expansion of if let expansion
<nom macros>:15:1: 20:43 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:23:1: 23:74 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:5:7: 5:42 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
<nom macros>:14:6: 14:75 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
src/parser.rs:4:2: 4:112 note: expansion site
<nom macros>:15:56: 5:48 help: run `rustc --explain E0308` to see a detailed explanation
<nom macros>:15:56: 5:48 error: mismatched types:
expected `&[u8]`,
found `u8`
(expected &-ptr,
found u8) [E0308]
(internal compiler error: unprintable span)
<nom macros>:1:1: 13:71 note: in expansion of apply!
<nom macros>:5:20: 5:67 note: expansion site
note: in expansion of for loop expansion
<nom macros>:3:45: 6:27 note: expansion site
<nom macros>:1:1: 12:79 note: in expansion of filter!
<nom macros>:15:46: 16:2 note: expansion site
note: in expansion of if let expansion
<nom macros>:15:1: 20:43 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:23:1: 23:74 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:5:7: 5:42 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
<nom macros>:14:6: 14:75 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
src/parser.rs:4:2: 4:112 note: expansion site
<nom macros>:15:56: 5:48 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to previous error
error: aborting due to previous error
I have the following rustc version:
rustc 1.4.0-nightly (f6aac8037 2015-09-06)