blob: f09d62970e8787bdd3b779dbe99648d58548c3b4 [file] [edit]
#![feature(os_string_truncate)]
#![warn(clippy::manual_clear)]
use std::collections::VecDeque;
use std::ffi::OsString;
struct CustomTruncate(String);
impl CustomTruncate {
fn truncate(&mut self, len: usize) {
self.0.truncate(len);
}
fn clear(&mut self) {
self.0.clear();
}
}
fn main() {
let mut v = vec![1, 2, 3];
v.clear(); //~ manual_clear
let mut d: VecDeque<i32> = VecDeque::from([1, 2, 3]);
d.clear(); //~ manual_clear
// lint: macro receiver
macro_rules! get_vec {
($e:expr) => {
$e
};
}
get_vec!(v).clear(); //~ manual_clear
// no lint: other args
v.truncate(1);
// no lint: `0` from a different context
{
// `0` inside a block expression should not be changed into `clear()`
v.truncate({ 0 });
}
// lint: String
let mut s = String::from("abc");
s.clear(); //~ manual_clear
// lint: OsString
let mut os = OsString::from("abc");
os.clear(); //~ manual_clear
// no lint: custom type
let mut c = CustomTruncate(String::from("abc"));
c.truncate(0);
}