11740: Insert #[must_use] in generate_is_empty_from_len r=lnicola a=Walther

Inserts `#[must_use]` for the generated `is_empty` methods. I also added the `#[must_use]` for the `len()` methods in the documentation examples and tests for this generator while at it, to make sure they too encourage the use of the annotation.

From discussion in https://github.com/rust-analyzer/rust-analyzer/issues/11736 and https://github.com/rust-analyzer/rust-analyzer/pull/11738

Co-authored-by: Walther <veeti.haapsamo@gmail.com>
This commit is contained in:
bors[bot] 2022-03-17 13:14:26 +00:00 committed by GitHub
commit 0a18e4355a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -17,6 +17,7 @@ use crate::{
// struct MyStruct { data: Vec<String> } // struct MyStruct { data: Vec<String> }
// //
// impl MyStruct { // impl MyStruct {
// #[must_use]
// p$0ub fn len(&self) -> usize { // p$0ub fn len(&self) -> usize {
// self.data.len() // self.data.len()
// } // }
@ -27,10 +28,12 @@ use crate::{
// struct MyStruct { data: Vec<String> } // struct MyStruct { data: Vec<String> }
// //
// impl MyStruct { // impl MyStruct {
// #[must_use]
// pub fn len(&self) -> usize { // pub fn len(&self) -> usize {
// self.data.len() // self.data.len()
// } // }
// //
// #[must_use]
// pub fn is_empty(&self) -> bool { // pub fn is_empty(&self) -> bool {
// self.len() == 0 // self.len() == 0
// } // }
@ -72,6 +75,7 @@ pub(crate) fn generate_is_empty_from_len(acc: &mut Assists, ctx: &AssistContext)
|builder| { |builder| {
let code = r#" let code = r#"
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
}"# }"#
@ -129,6 +133,7 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self, _i: bool) -> usize { p$0ub fn len(&self, _i: bool) -> usize {
self.data.len() self.data.len()
} }
@ -146,10 +151,12 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self) -> usize { p$0ub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }
@ -167,6 +174,7 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self) -> u32 { p$0ub fn len(&self) -> u32 {
self.data.len() self.data.len()
} }
@ -183,6 +191,7 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self) -> usize { p$0ub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
@ -192,10 +201,12 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
pub fn len(&self) -> usize { pub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }
@ -212,10 +223,12 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
pub fn new() -> Self { pub fn new() -> Self {
Self { data: 0 } Self { data: 0 }
} }
#[must_use]
p$0ub fn len(&self) -> usize { p$0ub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
@ -229,14 +242,17 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
pub fn new() -> Self { pub fn new() -> Self {
Self { data: 0 } Self { data: 0 }
} }
#[must_use]
pub fn len(&self) -> usize { pub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }
@ -257,12 +273,14 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self) -> usize { p$0ub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
} }
impl MyStruct { impl MyStruct {
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }

View File

@ -1099,6 +1099,7 @@ fn doctest_generate_is_empty_from_len() {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
p$0ub fn len(&self) -> usize { p$0ub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
@ -1108,10 +1109,12 @@ impl MyStruct {
struct MyStruct { data: Vec<String> } struct MyStruct { data: Vec<String> }
impl MyStruct { impl MyStruct {
#[must_use]
pub fn len(&self) -> usize { pub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
#[must_use]
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }