]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_error_codes/src/error_codes/E0321.md
Rollup merge of #92310 - ehuss:rustdoc-ice, r=estebank
[rust.git] / compiler / rustc_error_codes / src / error_codes / E0321.md
1 A cross-crate opt-out trait was implemented on something which wasn't a struct
2 or enum type.
3
4 Erroneous code example:
5
6 ```compile_fail,E0321
7 #![feature(auto_traits)]
8
9 struct Foo;
10
11 impl !Sync for Foo {}
12
13 unsafe impl Send for &'static Foo {}
14 // error: cross-crate traits with a default impl, like `core::marker::Send`,
15 //        can only be implemented for a struct/enum type, not
16 //        `&'static Foo`
17 ```
18
19 Only structs and enums are permitted to impl Send, Sync, and other opt-out
20 trait, and the struct or enum must be local to the current crate. So, for
21 example, `unsafe impl Send for Rc<Foo>` is not allowed.