@@ -390,17 +390,23 @@ pass.
390
390
391
391
## Specifying the lint's minimum supported Rust version (MSRV)
392
392
393
- Projects supporting older versions of Rust would need to disable a lint if it
394
- targets features present in later versions. Support for this can be added by
395
- specifying an MSRV in your lint like so,
393
+ Sometimes a lint makes suggestions that require a certain version of Rust. For example, the ` manual_strip ` lint suggests
394
+ using ` str::strip_prefix ` and ` str::strip_suffix ` which is only available after Rust 1.45. In such cases, you need to
395
+ ensure that the MSRV configured for the project is >= the MSRV of the required Rust feature. If multiple features are
396
+ required, just use the one with a lower MSRV.
397
+
398
+ First, add an MSRV alias for the required feature in [ ` clippy_utils::msrvs ` ] ( /clippy_utils/src/msrvs.rs ) . This can be
399
+ accessed later as ` msrvs::STR_STRIP_PREFIX ` , for example.
396
400
397
401
``` rust
398
- const MANUAL_STRIP_MSRV : RustcVersion = RustcVersion :: new (1 , 45 , 0 );
402
+ msrv_aliases! {
403
+ ..
404
+ 1 ,45 ,0 { STR_STRIP_PREFIX }
405
+ }
399
406
```
400
407
401
- The project's MSRV will also have to be an attribute in the lint so you'll have
402
- to add a struct and constructor for your lint. The project's MSRV needs to be
403
- passed when the lint is registered in ` lib.rs `
408
+ In order to access the project-configured MSRV, you need to have an ` msrv ` field in the LintPass struct, and a
409
+ constructor to initialize the field. The ` msrv ` value is passed to the constructor in ` clippy_lints/lib.rs ` .
404
410
405
411
``` rust
406
412
pub struct ManualStrip {
@@ -415,11 +421,11 @@ impl ManualStrip {
415
421
}
416
422
```
417
423
418
- The project's MSRV can then be matched against the lint's ` msrv ` in the LintPass
424
+ The project's MSRV can then be matched against the feature MSRV in the LintPass
419
425
using the ` meets_msrv ` utility function.
420
426
421
427
``` rust
422
- if ! meets_msrv (self . msrv. as_ref (), & MANUAL_STRIP_MSRV ) {
428
+ if ! meets_msrv (self . msrv. as_ref (), & msrvs :: STR_STRIP_PREFIX ) {
423
429
return ;
424
430
}
425
431
```
0 commit comments