Good morning, I am exploring Rust's traits in relation to working on data structures. Unfortunately, I have managed to back myself into a hole with an error message that I can't understand the problem with; to wit, "has an incompatible type: expected type parameter but found type parameter" is an error I don't understand.
I've stuffed the code up on github: https://github.com/pnathan/flaky-data-structures/tree/non-compiling Here's my Rust version: $ rustc --version rustc 0.5 (8b98e5a 2012-12-20 17:01:38 -0800) host: x86_64-apple-darwin And here are the error messages: $ make rustc --test linear/linear.rs -o linear/test_linear linear/linear.rs:50:4: 59:5 error: method `head` has an incompatible type: expected type parameter but found type parameter linear/linear.rs:50 fn head<T> (list: @List_Data<T>) -> Option<T> { linear/linear.rs:51 match (list) { linear/linear.rs:52 @Nil => { linear/linear.rs:53 None linear/linear.rs:54 } linear/linear.rs:55 @Cons(e, _) => { ... linear/linear.rs:60:4: 62:5 error: method `length` has an incompatible type: expected type parameter but found type parameter linear/linear.rs:60 fn length<T>(list: @List_Data<T>) -> u64 { linear/linear.rs:61 0 linear/linear.rs:62 } linear/linear.rs:68:4: 70:5 error: method `size` has an incompatible type: expected type parameter but found type parameter linear/linear.rs:68 fn size<T> (cont: @List_Data<T>) -> u64 { linear/linear.rs:69 0 linear/linear.rs:70 } linear/linear.rs:76:4: 80:5 error: method `peek` has an incompatible type: expected type parameter but found type parameter linear/linear.rs:76 fn peek<T>(list : @List_Data<T>) -> Option<@T> { linear/linear.rs:77 None linear/linear.rs:78 // head linear/linear.rs:79 //head(list) linear/linear.rs:80 } linear/linear.rs:82:4: 84:5 error: method `pop` has an incompatible type: expected type parameter but found type parameter linear/linear.rs:82 fn pop<T>(list : @List_Data<T>) -> (Option<@T>, @List<@T>) { linear/linear.rs:83 (None, @Nil) linear/linear.rs:84 } linear/linear.rs:51:8: 58:9 error: mismatched types: expected `core::option::Option<'b>` but found `core::option::Option<@'b>` (expected type parameter but found @-ptr) linear/linear.rs:51 match (list) { linear/linear.rs:52 @Nil => { linear/linear.rs:53 None linear/linear.rs:54 } linear/linear.rs:55 @Cons(e, _) => { linear/linear.rs:56 Some(e) ... linear/linear.rs:83:8: 83:20 error: mismatched types: expected `(core::option::Option<@'b>,@List<@'b>)` but found `(core::option::Option<<V2>>,@List_Data<<V3>>)` (expected trait List but found @-ptr) linear/linear.rs:83 (None, @Nil) ^~~~~~~~~~~~ error: aborting due to 7 previous errors make: *** [test_linear] Error 101 Regards, Paul Nathan _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
