2021-06-03 01:56:34 -05:00
|
|
|
#![warn(clippy::rc_mutex)]
|
2022-06-08 14:08:37 -05:00
|
|
|
#![allow(unused, clippy::disallowed_names)]
|
2021-06-03 01:56:34 -05:00
|
|
|
|
|
|
|
use std::rc::Rc;
|
|
|
|
use std::sync::Mutex;
|
|
|
|
|
2021-08-12 06:15:15 -05:00
|
|
|
pub struct MyStructWithPrivItem {
|
2021-06-05 08:20:02 -05:00
|
|
|
foo: Rc<Mutex<i32>>,
|
2023-07-28 14:35:48 -05:00
|
|
|
//~^ ERROR: usage of `Rc<Mutex<_>>`
|
2021-06-05 08:20:02 -05:00
|
|
|
}
|
2021-06-03 01:56:34 -05:00
|
|
|
|
2021-08-12 06:15:15 -05:00
|
|
|
pub struct MyStructWithPubItem {
|
|
|
|
pub foo: Rc<Mutex<i32>>,
|
|
|
|
}
|
|
|
|
|
2021-06-03 01:56:34 -05:00
|
|
|
pub struct SubT<T> {
|
|
|
|
foo: T,
|
|
|
|
}
|
|
|
|
|
|
|
|
pub enum MyEnum {
|
|
|
|
One,
|
|
|
|
Two,
|
|
|
|
}
|
|
|
|
|
2021-08-12 06:15:15 -05:00
|
|
|
// All of these test should be trigger the lint because they are not
|
|
|
|
// part of the public api
|
|
|
|
fn test1<T>(foo: Rc<Mutex<T>>) {}
|
2023-07-28 14:35:48 -05:00
|
|
|
//~^ ERROR: usage of `Rc<Mutex<_>>`
|
2021-08-12 06:15:15 -05:00
|
|
|
fn test2(foo: Rc<Mutex<MyEnum>>) {}
|
2023-07-28 14:35:48 -05:00
|
|
|
//~^ ERROR: usage of `Rc<Mutex<_>>`
|
2021-08-12 06:15:15 -05:00
|
|
|
fn test3(foo: Rc<Mutex<SubT<usize>>>) {}
|
2023-07-28 14:35:48 -05:00
|
|
|
//~^ ERROR: usage of `Rc<Mutex<_>>`
|
2021-06-03 01:56:34 -05:00
|
|
|
|
2021-08-12 06:15:15 -05:00
|
|
|
// All of these test should be allowed because they are part of the
|
|
|
|
// public api and `avoid_breaking_exported_api` is `false` by default.
|
|
|
|
pub fn pub_test1<T>(foo: Rc<Mutex<T>>) {}
|
|
|
|
pub fn pub_test2(foo: Rc<Mutex<MyEnum>>) {}
|
|
|
|
pub fn pub_test3(foo: Rc<Mutex<SubT<usize>>>) {}
|
2021-06-03 01:56:34 -05:00
|
|
|
|
2021-08-12 06:15:15 -05:00
|
|
|
fn main() {}
|