]> git.lizzy.rs Git - rust.git/blob - src/test/ui/error-codes/E0033-teach.stderr
Merge commit 'd3a2366ee877075c59b38bd8ced55f224fc7ef51' into sync_cg_clif-2022-07-26
[rust.git] / src / test / ui / error-codes / E0033-teach.stderr
1 error[E0423]: expected value, found trait `SomeTrait`
2   --> $DIR/E0033-teach.rs:8:37
3    |
4 LL |     let trait_obj: &dyn SomeTrait = SomeTrait;
5    |                                     ^^^^^^^^^ not a value
6
7 error[E0038]: the trait `SomeTrait` cannot be made into an object
8   --> $DIR/E0033-teach.rs:8:20
9    |
10 LL |     let trait_obj: &dyn SomeTrait = SomeTrait;
11    |                    ^^^^^^^^^^^^^^ `SomeTrait` cannot be made into an object
12    |
13 note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
14   --> $DIR/E0033-teach.rs:4:8
15    |
16 LL | trait SomeTrait {
17    |       --------- this trait cannot be made into an object...
18 LL |     fn foo();
19    |        ^^^ ...because associated function `foo` has no `self` parameter
20 help: consider turning `foo` into a method by giving it a `&self` argument
21    |
22 LL |     fn foo(&self);
23    |            +++++
24 help: alternatively, consider constraining `foo` so it does not apply to trait objects
25    |
26 LL |     fn foo() where Self: Sized;
27    |              +++++++++++++++++
28
29 error[E0033]: type `&dyn SomeTrait` cannot be dereferenced
30   --> $DIR/E0033-teach.rs:12:9
31    |
32 LL |     let &invalid = trait_obj;
33    |         ^^^^^^^^ type `&dyn SomeTrait` cannot be dereferenced
34    |
35    = note: This error indicates that a pointer to a trait type cannot be implicitly dereferenced by a pattern. Every trait defines a type, but because the size of trait implementors isn't fixed, this type has no compile-time size. Therefore, all accesses to trait types must be through pointers. If you encounter this error you should try to avoid dereferencing the pointer.
36            
37            You can read more about trait objects in the Trait Objects section of the Reference: https://doc.rust-lang.org/reference/types.html#trait-objects
38
39 error: aborting due to 3 previous errors
40
41 Some errors have detailed explanations: E0033, E0038, E0423.
42 For more information about an error, try `rustc --explain E0033`.