#![forbid(unsafe_code)]
#![allow(unknown_lints)]
#![warn(nonstandard_style, rust_2018_idioms, unused)]
#![forbid(future_incompatible, rust_2018_compatibility, rust_2021_compatibility)]
#![warn(
box_pointers,
deprecated_in_future,
fuzzy_provenance_casts,
lossy_provenance_casts,
macro_use_extern_crate,
meta_variable_misuse,
missing_abi,
missing_copy_implementations,
missing_debug_implementations,
missing_docs,
non_ascii_idents,
noop_method_call,
single_use_lifetimes,
trivial_casts,
trivial_numeric_casts,
unreachable_pub,
unused_import_braces,
unused_lifetimes,
unused_qualifications,
unused_results,
variant_size_differences
)]
#![warn(clippy::all, clippy::pedantic, clippy::nursery, clippy::restriction)]
#![allow(clippy::blanket_clippy_restriction_lints)] #![allow(clippy::exhaustive_structs, clippy::exhaustive_enums, clippy::single_char_lifetime_names)]
pub mod basic {
include!("include/basic.rs");
}
pub mod box_pointers {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct {
#[pin]
pub p: Box<isize>,
pub u: Box<isize>,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum {
Struct {
#[pin]
p: Box<isize>,
u: Box<isize>,
},
Unit,
}
}
}
pub mod explicit_outlives_requirements {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct<'a, T, U>
where
T: ?Sized,
U: ?Sized,
{
#[pin]
pub pinned: &'a mut T,
pub unpinned: &'a mut U,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum<'a, T, U>
where
T: ?Sized,
U: ?Sized,
{
Struct {
#[pin]
pinned: &'a mut T,
unpinned: &'a mut U,
},
Unit,
}
}
}
pub mod variant_size_differences {
use pin_project_lite::pin_project;
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[allow(missing_debug_implementations, missing_copy_implementations)] #[allow(variant_size_differences)] #[allow(clippy::large_enum_variant)] pub enum Enum {
V1 { f: u8 },
V2 { f: [u8; 1024] },
}
}
}
pub mod clippy_mut_mut {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct<'a, T, U> {
#[pin]
pub pinned: &'a mut T,
pub unpinned: &'a mut U,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum<'a, T, U> {
Struct {
#[pin]
pinned: &'a mut T,
unpinned: &'a mut U,
},
Unit,
}
}
}
#[allow(unreachable_pub)]
mod clippy_redundant_pub_crate {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct<T, U> {
#[pin]
pub pinned: T,
pub unpinned: U,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum<T, U> {
Struct {
#[pin]
pinned: T,
unpinned: U,
},
Unit,
}
}
}
#[allow(clippy::use_self)]
pub mod clippy_type_repetition_in_bounds {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct<T, U>
where
Struct<T, U>: Sized,
{
#[pin]
pub pinned: T,
pub unpinned: U,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum<T, U>
where
Enum<T, U>: Sized,
{
Struct {
#[pin]
pinned: T,
unpinned: U,
},
Unit,
}
}
}
pub mod clippy_used_underscore_binding {
use pin_project_lite::pin_project;
pin_project! {
#[derive(Debug)]
pub struct Struct<T, U> {
#[pin]
pub _pinned: T,
pub _unpinned: U,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
#[derive(Debug)]
pub enum Enum<T, U> {
Struct {
#[pin]
_pinned: T,
_unpinned: U,
},
}
}
}
pub mod clippy_ref_option_ref {
use pin_project_lite::pin_project;
pin_project! {
pub struct Struct<'a> {
#[pin]
pub _pinned: Option<&'a ()>,
pub _unpinned: Option<&'a ()>,
}
}
pin_project! {
#[project = EnumProj]
#[project_ref = EnumProjRef]
pub enum Enum<'a> {
Struct {
#[pin]
_pinned: Option<&'a ()>,
_unpinned: Option<&'a ()>,
},
}
}
}