= note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
```
-## legacy-constructor-visibility
-
-[RFC 1506](https://github.com/rust-lang/rfcs/blob/master/text/1506-adt-kinds.md) modified some
-visibility rules, and changed the visibility of struct constructors. Some
-example code that triggers this lint:
-
-```rust,ignore
-mod m {
- pub struct S(u8);
-
- fn f() {
- // this is trying to use S from the 'use' line, but because the `u8` is
- // not pub, it is private
- ::S;
- }
-}
-
-use m::S;
-```
-
-This will produce:
-
-```text
-error: private struct constructors are not usable through re-exports in outer modules
- --> src/main.rs:5:9
- |
-5 | ::S;
- | ^^^
- |
- = note: `#[deny(legacy_constructor_visibility)]` on by default
- = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
- = note: for more information, see issue #39207 <https://github.com/rust-lang/rust/issues/39207>
-```
-
-
-## legacy-directory-ownership
-
-The legacy_directory_ownership warning is issued when
-
-* There is a non-inline module with a `#[path]` attribute (e.g. `#[path = "foo.rs"] mod bar;`),
-* The module's file ("foo.rs" in the above example) is not named "mod.rs", and
-* The module's file contains a non-inline child module without a `#[path]` attribute.
-
-The warning can be fixed by renaming the parent module to "mod.rs" and moving
-it into its own directory if appropriate.
-
-
## missing-fragment-specifier
The missing_fragment_specifier warning is issued when an unused pattern in a
|
```
-## parenthesized-params-in-types-and-modules
+## patterns-in-fns-without-body
-This lint detects incorrect parentheses. Some example code that triggers this
-lint:
+This lint detects patterns in functions without body were that were
+previously erroneously allowed. Some example code that triggers this lint:
-```rust,ignore
-let x = 5 as usize();
+```rust,compile_fail
+trait Trait {
+ fn foo(mut arg: u8);
+}
```
This will produce:
```text
-error: parenthesized parameters may only be used with a trait
- --> src/main.rs:2:21
+warning: patterns aren't allowed in methods without bodies
+ --> src/main.rs:2:12
|
-2 | let x = 5 as usize();
- | ^^
+2 | fn foo(mut arg: u8);
+ | ^^^^^^^
|
- = note: `#[deny(parenthesized_params_in_types_and_modules)]` on by default
+ = note: `#[warn(patterns_in_fns_without_body)]` on by default
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
- = note: for more information, see issue #42238 <https://github.com/rust-lang/rust/issues/42238>
+ = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
```
-To fix it, remove the `()`s.
+To fix this, remove the pattern; it can be used in the implementation without
+being used in the definition. That is:
-## pub-use-of-private-extern-crate
+```rust
+trait Trait {
+ fn foo(arg: u8);
+}
-This lint detects a specific situation of re-exporting a private `extern crate`;
+impl Trait for i32 {
+ fn foo(mut arg: u8) {
+
+ }
+}
+```
-## safe-extern-statics
+## pub-use-of-private-extern-crate
-In older versions of Rust, there was a soundness issue where `extern static`s were allowed
-to be accessed in safe code. This lint now catches and denies this kind of code.
+This lint detects a specific situation of re-exporting a private `extern crate`;
## unknown-crate-types