-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Trait object coercion does not work with return objects #12744
Labels
A-trait-system
Area: Trait system
E-needs-test
Call for participation: An issue has been fixed and does not reproduce, but no test has been added.
Comments
In more detail: trait Foo {}
impl Foo for u8 {}
// Coercions work in argument position:
fn take_box(foo: Box<Foo>) {}
fn take_ref(foo: &Foo) {}
fn use_takes() {
let x: u8 = 0;
take_box(box x);
take_ref(&x);
}
// But do not work in return position:
fn make_box() -> Box<Foo> {
// The following fails with:
// error: mismatched types: expected `Box<Foo>` but found `Box<u8>`
// (expected trait Foo but found u8)
// box 0u8
box 0u8 as Box<Foo>
}
fn make_ref(u: &u8) -> &Foo {
// The following fails with:
// error: mismatched types: expected `&Foo` but found `&u8`
// (expected trait Foo but found u8)
// u
u as &Foo
}
// They do work via ascription:
fn main() {
let b: Box<Foo> = box 0u8;
let r: &Foo = &0u8;
} |
I think it's fixed. fn test() -> Box<std::any::Any + 'static> { box 1i }
println!("{}", test()) |
alexcrichton
added
the
E-needs-test
Call for participation: An issue has been fixed and does not reproduce, but no test has been added.
label
Nov 30, 2014
ghost
mentioned this issue
Dec 12, 2014
brson
added a commit
to brson/rust
that referenced
this issue
Dec 12, 2014
Closes rust-lang#5988. Closes rust-lang#10176. Closes rust-lang#10456. Closes rust-lang#12744. Closes rust-lang#13264. Closes rust-lang#13324. Closes rust-lang#14182. Closes rust-lang#15381. Closes rust-lang#15444. Closes rust-lang#15480. Closes rust-lang#15756. Closes rust-lang#16822. Closes rust-lang#16966. Closes rust-lang#17351. Closes rust-lang#17503. Closes rust-lang#17545. Closes rust-lang#17771. Closes rust-lang#17816. Closes rust-lang#17897. Closes rust-lang#17905. Closes rust-lang#18188. Closes rust-lang#18232. Closes rust-lang#18345. Closes rust-lang#18389. Closes rust-lang#18400. Closes rust-lang#18502. Closes rust-lang#18611. Closes rust-lang#18783. Closes rust-lang#19009. Closes rust-lang#19081. Closes rust-lang#19098. Closes rust-lang#19127. Closes rust-lang#19135.
brson
added a commit
to brson/rust
that referenced
this issue
Dec 13, 2014
Closes rust-lang#5988. Closes rust-lang#10176. Closes rust-lang#10456. Closes rust-lang#12744. Closes rust-lang#13264. Closes rust-lang#13324. Closes rust-lang#14182. Closes rust-lang#15381. Closes rust-lang#15444. Closes rust-lang#15480. Closes rust-lang#15756. Closes rust-lang#16822. Closes rust-lang#16966. Closes rust-lang#17351. Closes rust-lang#17503. Closes rust-lang#17545. Closes rust-lang#17771. Closes rust-lang#17816. Closes rust-lang#17897. Closes rust-lang#17905. Closes rust-lang#18188. Closes rust-lang#18232. Closes rust-lang#18345. Closes rust-lang#18389. Closes rust-lang#18400. Closes rust-lang#18502. Closes rust-lang#18611. Closes rust-lang#18783. Closes rust-lang#19009. Closes rust-lang#19081. Closes rust-lang#19098. Closes rust-lang#19127. Closes rust-lang#19135.
bors
added a commit
that referenced
this issue
Dec 18, 2014
Closes #5988. Closes #10176. Closes #10456. Closes #12744. Closes #13264. Closes #13324. Closes #14182. Closes #15381. Closes #15444. Closes #15480. Closes #15756. Closes #16822. Closes #16966. Closes #17351. Closes #17503. Closes #17545. Closes #17771. Closes #17816. Closes #17897. Closes #17905. Closes #18188. Closes #18232. Closes #18345. Closes #18389. Closes #18400. Closes #18502. Closes #18611. Closes #18783. Closes #19009. Closes #19081. Closes #19098. Closes #19127. Closes #19135.
bors
added a commit
to rust-lang-ci/rust
that referenced
this issue
Jul 25, 2022
Fix typos Signed-off-by: hi-rustin <rustin.liu@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-trait-system
Area: Trait system
E-needs-test
Call for participation: An issue has been fixed and does not reproduce, but no test has been added.
I guess #11156 missed it?
The text was updated successfully, but these errors were encountered: