Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
100
third-party/vendor/pin-project-lite/tests/proper_unpin.rs
vendored
Normal file
100
third-party/vendor/pin-project-lite/tests/proper_unpin.rs
vendored
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
#![warn(rust_2018_idioms, single_use_lifetimes)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
#[macro_use]
|
||||
mod auxiliary;
|
||||
|
||||
pub mod default {
|
||||
use std::marker::PhantomPinned;
|
||||
|
||||
use pin_project_lite::pin_project;
|
||||
|
||||
struct Inner<T> {
|
||||
f: T,
|
||||
}
|
||||
|
||||
assert_unpin!(Inner<()>);
|
||||
assert_not_unpin!(Inner<PhantomPinned>);
|
||||
|
||||
pin_project! {
|
||||
struct Struct<T, U> {
|
||||
#[pin]
|
||||
f1: Inner<T>,
|
||||
f2: U,
|
||||
}
|
||||
}
|
||||
|
||||
assert_unpin!(Struct<(), ()>);
|
||||
assert_unpin!(Struct<(), PhantomPinned>);
|
||||
assert_not_unpin!(Struct<PhantomPinned, ()>);
|
||||
assert_not_unpin!(Struct<PhantomPinned, PhantomPinned>);
|
||||
|
||||
pin_project! {
|
||||
#[project = EnumProj]
|
||||
#[project_ref = EnumProjRef]
|
||||
enum Enum<T, U> {
|
||||
V1 {
|
||||
#[pin]
|
||||
f1: Inner<T>,
|
||||
f2: U,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
assert_unpin!(Enum<(), ()>);
|
||||
assert_unpin!(Enum<(), PhantomPinned>);
|
||||
assert_not_unpin!(Enum<PhantomPinned, ()>);
|
||||
assert_not_unpin!(Enum<PhantomPinned, PhantomPinned>);
|
||||
|
||||
pin_project! {
|
||||
#[project(!Unpin)]
|
||||
enum NotUnpinEnum<T, U> {
|
||||
V1 {
|
||||
#[pin] f1: Inner<T>,
|
||||
f2: U,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert_not_unpin!(NotUnpinEnum<(), ()>);
|
||||
|
||||
pin_project! {
|
||||
struct TrivialBounds {
|
||||
#[pin]
|
||||
f: PhantomPinned,
|
||||
}
|
||||
}
|
||||
|
||||
assert_not_unpin!(TrivialBounds);
|
||||
|
||||
pin_project! {
|
||||
struct PinRef<'a, T, U> {
|
||||
#[pin]
|
||||
f1: &'a mut Inner<T>,
|
||||
f2: U,
|
||||
}
|
||||
}
|
||||
|
||||
assert_unpin!(PinRef<'_, PhantomPinned, PhantomPinned>);
|
||||
|
||||
pin_project! {
|
||||
#[project(!Unpin)]
|
||||
struct NotUnpin<U> {
|
||||
#[pin]
|
||||
u: U
|
||||
}
|
||||
}
|
||||
|
||||
assert_not_unpin!(NotUnpin<()>);
|
||||
|
||||
pin_project! {
|
||||
#[project(!Unpin)]
|
||||
struct NotUnpinRef<'a, T, U> {
|
||||
#[pin]
|
||||
f1: &'a mut Inner<T>,
|
||||
f2: U
|
||||
}
|
||||
}
|
||||
|
||||
assert_not_unpin!(NotUnpinRef<'_, (), ()>);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue