struct Types {
box_types: Vec<DefId>,
cstring_types: Vec<DefId>,
vec_types: Vec<DefId>,
nonnull_types: Vec<DefId>,
maybe_uninit_types: Vec<DefId>,
ascii_char_types: Vec<DefId>,
ordering_types: Vec<DefId>,
iter_types: Vec<DefId>,
rc_types: Vec<DefId>,
sync_primitive_types: Vec<DefId>,
exchange_malloc: Option<DefId>,
negative_types: IndexMap<Box<str>, Vec<DefId>>,
}Expand description
Resolved DefIds of well-known std types (ADTs), used by the ADT
type-name classifiers (crate::verify::api_classify::is_std_box,
crate::verify::api_classify::is_std_vec, …). Each entry collects the
std type’s DefId (via lang/diagnostic item, or — for NonNull, which has
neither — by name-scanning the std crates’ adts()) and any same-named
re-implementations in the local crate (the std-challenge suites re-implement
Vec/NonNull under the same names).
Fields§
§box_types: Vec<DefId>§cstring_types: Vec<DefId>§vec_types: Vec<DefId>§nonnull_types: Vec<DefId>§maybe_uninit_types: Vec<DefId>§ascii_char_types: Vec<DefId>§ordering_types: Vec<DefId>§iter_types: Vec<DefId>§rc_types: Vec<DefId>§sync_primitive_types: Vec<DefId>§exchange_malloc: Option<DefId>alloc::alloc::exchange_malloc (Box::new’s lang item on toolchains
that lower Box::new to it) — resolved by name scan, since it has no
lang item on newer toolchains.
negative_types: IndexMap<Box<str>, Vec<DefId>>Negative auto-trait types (Cell/UnsafeCell/RefCell/Ref/RefMut/
guards), keyed by short name — used by ContainNoType in Send/Sync obligations.
Auto Trait Implementations§
impl !DynSend for Types
impl !DynSync for Types
impl Freeze for Types
impl RefUnwindSafe for Types
impl Send for Types
impl Sync for Types
impl Unpin for Types
impl UnsafeUnpin for Types
impl UnwindSafe for Types
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more