Closed
Description
trait Foo: Send {}
impl Foo for Box<Foo> {}
fn main() {}
test.rs:3:1: 3:25 error: the trait `core::kinds::Send` is not implemented for the type `Box<Foo+'static>`
test.rs:3 impl Foo for Box<Foo> {}
^~~~~~~~~~~~~~~~~~~~~~~~
test.rs:3:1: 3:25 note: the trait `core::kinds::Send` must be implemented because it is required by `Foo`
test.rs:3 impl Foo for Box<Foo> {}
^~~~~~~~~~~~~~~~~~~~~~~~
or similarly
trait Foo: Send {}
struct Bar(Box<Foo>);
fn test() {
fn is_send<U: Send>() {}
is_send::<Bar>()
}
fn main() {}
test.rs:7:5: 7:19 error: the trait `core::kinds::Send` is not implemented for the type `Bar`
test.rs:7 is_send::<Bar>()
^~~~~~~~~~~~~~
test.rs:7:5: 7:19 note: the trait `core::kinds::Send` must be implemented because it is required by `test::is_send`
test.rs:7 is_send::<Bar>()
^~~~~~~~~~~~~~
error: aborting due to previous error
The compiler correctly tracks the Send
kind in other contexts. This properly compiles, for example:
trait Foo: Send {}
fn test<T: Foo>() {
fn is_send<U: Send>() {}
is_send::<T>()
}
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
huonw commentedon Oct 4, 2014
Dupe of #15155.
Auto merge of rust-lang#17604 - Veykril:tt-symbols, r=Veykril