wowlab_tidy/languages/rust/rules/correctness/
support.rs1use ra_ap_syntax::ast::{self, HasGenericArgs};
2
3pub(super) fn weak_type_name(ty: &ast::Type) -> Option<String> {
4 match ty {
5 ast::Type::RefType(reference) => match reference.ty()? {
6 ast::Type::PathType(path)
7 if path
8 .path()?
9 .segment()?
10 .name_ref()
11 .is_some_and(|name| name.text() == "str") =>
12 {
13 Some("&str".to_string())
14 }
15 _ => None,
16 },
17 ast::Type::PathType(path) => {
18 let segment = path.path()?.segment()?;
19
20 if segment.generic_arg_list().is_some() {
21 return None;
22 }
23
24 let name = segment.name_ref()?.text().to_string();
25
26 matches!(
27 name.as_str(),
28 "u8" | "u16"
29 | "u32"
30 | "u64"
31 | "u128"
32 | "usize"
33 | "i8"
34 | "i16"
35 | "i32"
36 | "i64"
37 | "i128"
38 | "isize"
39 | "f32"
40 | "f64"
41 | "bool"
42 | "char"
43 | "String"
44 )
45 .then_some(name)
46 }
47 _ => None,
48 }
49}