Okay, at least in 0.5, multiple traits are spelled with a space, not a comma, 
oops.

So it should be, after fixing most of the errors:

use cmp::{Ord, Eq};
...
fn foo_generic<T: Ord Eq ToStr Copy>...

There is one error left that I haven't figured out:

/tmp/foo.rs:7:16: 7:20 error: illegal borrow: creating mutable alias to 
dereference of immutable ~ pointer
/tmp/foo.rs:7     quick_sort3(part);                                            
                                                                      
                              ^~~~

I find it weird that this manifests only in the generic version; I don't really 
understand slices, so I'm not sure how to go about diagnosing it.

Glenn

On Feb 2, 2013, at 11:30 PM, Glenn Willen wrote:

> I believe you need to specify, when declaring foo_generic, that your type T 
> has the Ord trait (i.e. that objects of type T can be ordered, which is 
> necessary in order for them to be sorted.) I think the way to do that is
> 
> fn foo_generic<T: Ord>...
> 
> When I test this, I have to 'use cmp::Ord;' in order to get Ord in scope. 
> Then I get a similar error about the Eq trait, but I have not yet figured out 
> how to convince rust that my type T also has Eq. The seemingly-obvious thing 
> of "T: Ord, Eq", combined with 'use cmp::Eq;' does not work.
> 
> /tmp/foo.rs:8:4: 8:15 error: failed to find an implementation of trait 
> core::cmp::Eq for <V6>
> /tmp/foo.rs:8     quick_sort3(part);               
> 
> (Although the error spells it core::cmp::Eq, using that doesn't help.)
> 
> Note that I am using rustc 0.5 -- I think the syntax for this may have 
> changed since then, confusing things further.
> 
> Glenn
> 
> On Feb 2, 2013, at 10:36 PM, Alexander Stavonin wrote:
> 
>> Hi,
>> 
>> I'm not sure it is an defect or failure to fully understand from my side. 
>> I'd like to sort an array. Unfortunately, it is not easy to understand which 
>> sort function should be used, but looks like quick_sort3 is good enough. 
>> 
>> Than:
>> 
>> 1 extern mod std;
>> 2 use std::sort::*;
>> 3 
>> 4 fn foo_generic<T>(data : &[T]) {
>> 5     let part = data.slice(0, data.len()/2);
>> 6     quick_sort3(part);                                                     
>>                                                              
>> 7     io::println(part.to_str());
>> 8 }
>> 9 
>> 10 fn foo(data : &[int]) {
>> 11     let mut part = data.slice(0, data.len()/2);
>> 12     quick_sort3(part);
>> 13     io::println(part.to_str());
>> 14 }
>> 15 fn main() {
>> 16     let data = ~[1, 3, 5, 2, 4, 6];
>> 17     foo(data);
>> 18     foo_generic(data);
>> 19 }
>> 
>> 
>> test.rs:6:4: 6:15 error: failed to find an implementation of trait 
>> @core::cmp::Ord for <V13>
>> test.rs:6     quick_sort3(part);
>>             ^~~~~~~~~~~
>> 
>> Is the foo_generic correct function?
>> 
>> Regards,
>> _______________________________________________
>> Rust-dev mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/rust-dev
>> 
>> 
>> !DSPAM:510e0ce6261275098973934!
>> 
> 

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to