summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits/new-solver/object-unsafety.stderr
blob: bb7c68b8941f00083db1f9eb5236ec7ab7c97858 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
error[E0277]: the trait bound `dyn Setup<From = T>: Setup` is not satisfied
  --> $DIR/object-unsafety.rs:12:12
   |
LL |     copy::<dyn Setup<From=T>>(t)
   |            ^^^^^^^^^^^^^^^^^ the trait `Setup` is not implemented for `dyn Setup<From = T>`
   |
note: required by a bound in `copy`
  --> $DIR/object-unsafety.rs:7:12
   |
LL | fn copy<U: Setup + ?Sized>(from: &U::From) -> U::From {
   |            ^^^^^ required by this bound in `copy`
help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
   |
LL | pub fn copy_any<T>(t: &T) -> T where dyn Setup<From = T>: Setup {
   |                                ++++++++++++++++++++++++++++++++

error: the type `&<dyn Setup<From = T> as Setup>::From` is not well-formed
  --> $DIR/object-unsafety.rs:12:31
   |
LL |     copy::<dyn Setup<From=T>>(t)
   |                               ^

error[E0308]: mismatched types
  --> $DIR/object-unsafety.rs:12:31
   |
LL |     copy::<dyn Setup<From=T>>(t)
   |     ------------------------- ^ types differ
   |     |
   |     arguments to this function are incorrect
   |
   = note: expected reference `&<dyn Setup<From = T> as Setup>::From`
              found reference `&T`
note: function defined here
  --> $DIR/object-unsafety.rs:7:4
   |
LL | fn copy<U: Setup + ?Sized>(from: &U::From) -> U::From {
   |    ^^^^                    --------------

error[E0308]: mismatched types
  --> $DIR/object-unsafety.rs:12:5
   |
LL | pub fn copy_any<T>(t: &T) -> T {
   |                 -            - expected `T` because of return type
   |                 |
   |                 this type parameter
LL |     copy::<dyn Setup<From=T>>(t)
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ
   |
   = note: expected type parameter `T`
             found associated type `<dyn Setup<From = T> as Setup>::From`
   = note: you might be missing a type parameter or trait bound

error: the type `<dyn Setup<From = T> as Setup>::From` is not well-formed
  --> $DIR/object-unsafety.rs:12:5
   |
LL |     copy::<dyn Setup<From=T>>(t)
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the size for values of type `<dyn Setup<From = T> as Setup>::From` cannot be known at compilation time
  --> $DIR/object-unsafety.rs:12:5
   |
LL |     copy::<dyn Setup<From=T>>(t)
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^---
   |     |
   |     doesn't have a size known at compile-time
   |     this returned value is of type `<dyn Setup<From = T> as Setup>::From`
   |
   = help: the trait `Sized` is not implemented for `<dyn Setup<From = T> as Setup>::From`
   = note: the return type of a function must have a statically known size
help: consider further restricting the associated type
   |
LL | pub fn copy_any<T>(t: &T) -> T where <dyn Setup<From = T> as Setup>::From: Sized {
   |                                +++++++++++++++++++++++++++++++++++++++++++++++++

error: aborting due to 6 previous errors

Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.