[rust-dev] read file line by line

Brian Anderson banderson at mozilla.com
Sat Apr 7 16:13:54 PDT 2012


On 04/06/2012 06:48 PM, Mic wrote:
> Hi
> I have trouble to compile the following code:
>
> import io::reader_util;
> import vec::map;
>
> fn main(args: [str]) {
>
>     let r = io::file_reader(args[1]); // r is result<reader, err_str>
>     if result::failure(r) {
>         fail result::get_err(r);
>     }
>
>     let rdr = result::get(r);
>
>     while !rdr.eof() {
>         let line = rdr.read_line();
>         io::println(line);
>         if str::len(line) != 0u {
>             let parts = vec::map(line.split_char(',')) {|s|
>                 str::trim(s)
>             };
>         }
>
>     }
> }
>
> and got the errors:
> $ rustc csv.rs <http://csv.rs>
> csv.rs:17:33: 17:48 error: attempted access of field split_char on 
> type str, but no public field or method with that name was found
> csv.rs:17 <http://csv.rs:17>             let parts = 
> vec::map(line.split_char(',')) {|s|
>                                                                 
>  ^~~~~~~~~~~~~~~
> csv.rs:17:33: 17:53 error: the type of this value must be known in 
> this context
> csv.rs:17 <http://csv.rs:17>             let parts = 
> vec::map(line.split_char(',')) {|s|
>                                                                 
>  ^~~~~~~~~~~~~~~~~~~~
>
> What did I do wrong?
>

Hi Mic.

The available extension methods (as in `line.split_char(',')`) have been 
changing a lot recently, so my guess is that your compiler is just 
slightly out of date and doesn't have the `split_char` extension on 
`str`. Try updating to Rust HEAD where you will also notice that 
`result::failure` is now called `result::is_failure`.

-Brian

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/rust-dev/attachments/20120407/9eb65ec7/attachment.html>


More information about the Rust-dev mailing list