mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 03:07:24 +03:00
59 lines
1.4 KiB
Rust
59 lines
1.4 KiB
Rust
#![warn(clippy::str_to_string)]
|
|
|
|
fn main() {
|
|
let hello: String = "hello world".to_owned();
|
|
//~^ str_to_string
|
|
|
|
let msg: &str = &hello[..];
|
|
msg.to_owned();
|
|
//~^ str_to_string
|
|
}
|
|
|
|
fn issue16271(key: &[u8]) {
|
|
macro_rules! t {
|
|
($e:expr) => {
|
|
match $e {
|
|
Ok(e) => e,
|
|
Err(e) => panic!("{} failed with {}", stringify!($e), e),
|
|
}
|
|
};
|
|
}
|
|
|
|
let _value: String = t!(str::from_utf8(key)).to_owned();
|
|
//~^ str_to_string
|
|
}
|
|
|
|
struct GenericWrapper<T>(T);
|
|
|
|
impl<T> GenericWrapper<T> {
|
|
fn mapper<U, F: FnOnce(T) -> U>(self, f: F) -> U {
|
|
f(self.0)
|
|
}
|
|
}
|
|
|
|
fn issue16511(x: Option<&str>) {
|
|
let _: Option<String> = x.map(str::to_owned);
|
|
//~^ str_to_string
|
|
|
|
let _: Option<String> = x.map(str::to_owned);
|
|
//~^ str_to_string
|
|
|
|
// This should not trigger the lint because ToOwned::to_owned would produce &str, not String.
|
|
let _: Vec<String> = ["a", "b"].iter().map(ToString::to_string).collect();
|
|
|
|
fn mapper<F: Fn(&str) -> String>(f: F) -> String {
|
|
f("hello")
|
|
}
|
|
let _: String = mapper(str::to_owned);
|
|
//~^ str_to_string
|
|
|
|
let w: GenericWrapper<&str> = GenericWrapper("hello");
|
|
let _: String = w.mapper(str::to_owned);
|
|
//~^ str_to_string
|
|
}
|
|
|
|
// No lint: non-str types should not trigger str_to_string. See #16569
|
|
fn no_lint_non_str() {
|
|
let _: Vec<String> = [1, 2].iter().map(i32::to_string).collect();
|
|
}
|