Hello,
As an exercise, I was trying to create a generic assert_equal function.
I came up with this:
#[cfg(test)]
mod tests {
#[test]
fn incorrect_output() {
let output = ~"Hello";
assert_equal("Hi", output);
}
fn assert_equal<T: ToStr + Eq>(expected: &T, actual: &T) {
assert!(expected == actual, "expected %s, was %s", expected.to_str(),
actual.to_str());
}
}
However, attempting to compile this using rustc 0.8 results in an error:
$ rustc assert_equal.rs --test -o tests
assert_equal.rs:6:21: 6:25 error: mismatched types: expected `&<V2>` but found
`&'static str` (expected &-ptr but found &'static str)
assert_equal.rs:6 assert_equal("Hi", output);
^~~~
assert_equal.rs:6:27: 6:33 error: mismatched types: expected `&<V2>` but found
`~str` (expected &-ptr but found ~str)
assert_equal.rs:6 assert_equal("Hi", output);
^~~~~~
assert_equal.rs:6:8: 6:20 error: cannot determine a type for this bounded type
parameter: unconstrained type
assert_equal.rs:6 assert_equal("Hi", output);
^~~~~~~~~~~~
Replacing assert_equal with a specialised definition for strings
results in an error-free compilation:
fn assert_equal(expected: &str, actual: &str) {
assert!(expected == actual, "expected %s, was %s", expected.to_str(),
actual.to_str());
}
How would I go about creating fixing the generic version of
assert_equal, or am I barking up completely the wrong tree?
Many thanks, and apologies if I'm sending this to the wrong list!
Michael
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev