Trait sgx_tstd::marker::Sync 1.0.0[−][src]
#[lang = "sync"]pub unsafe auto trait Sync { }
Types for which it is safe to share references between threads.
This trait is automatically implemented when the compiler determines it's appropriate.
The precise definition is: a type T is Sync if and only if &T is
Send. In other words, if there is no possibility of
undefined behavior (including data races) when passing
&T references between threads.
As one would expect, primitive types like u8 and f64
are all Sync, and so are simple aggregate types containing them,
like tuples, structs and enums. More examples of basic Sync
types include "immutable" types like &T, and those with simple
inherited mutability, such as Box<T>, Vec<T> and
most other collection types. (Generic parameters need to be Sync
for their container to be Sync.)
A somewhat surprising consequence of the definition is that &mut T
is Sync (if T is Sync) even though it seems like that might
provide unsynchronized mutation. The trick is that a mutable
reference behind a shared reference (that is, & &mut T)
becomes read-only, as if it were a & &T. Hence there is no risk
of a data race.
Types that are not Sync are those that have "interior
mutability" in a non-thread-safe form, such as cell::Cell
and cell::RefCell. These types allow for mutation of
their contents even through an immutable, shared reference. For
example the set method on Cell<T> takes &self, so it requires
only a shared reference &Cell<T>. The method performs no
synchronization, thus Cell cannot be Sync.
Another example of a non-Sync type is the reference-counting
pointer rc::Rc. Given any reference &Rc<T>, you can clone
a new Rc<T>, modifying the reference counts in a non-atomic way.
For cases when one does need thread-safe interior mutability,
Rust provides atomic data types, as well as explicit locking via
sync::Mutex and sync::RwLock. These types
ensure that any mutation cannot cause data races, hence the types
are Sync. Likewise, sync::Arc provides a thread-safe
analogue of Rc.
Any types with interior mutability must also use the
cell::UnsafeCell wrapper around the value(s) which
can be mutated through a shared reference. Failing to doing this is
undefined behavior. For example, transmute-ing
from &T to &mut T is invalid.
See the Nomicon for more
details about Sync.
Implementations on Foreign Types
impl !Sync for LocalWaker[src]
impl !Sync for LocalWakerimpl Sync for Waker[src]
impl Sync for Wakerimpl Sync for Argument
impl Sync for Argumentimpl Sync for FormatSpec
impl Sync for FormatSpecimpl Sync for Alignment
impl Sync for Alignmentimpl Sync for Count
impl Sync for Countimpl Sync for Position
impl Sync for Positionimpl Sync for stat
impl Sync for statimpl Sync for stat64
impl Sync for stat64impl Sync for timeval
impl Sync for timevalimpl Sync for timespec
impl Sync for timespecimpl Sync for sockaddr
impl Sync for sockaddrimpl Sync for sockaddr_in
impl Sync for sockaddr_inimpl Sync for sockaddr_in6
impl Sync for sockaddr_in6impl Sync for sockaddr_un
impl Sync for sockaddr_unimpl Sync for sockaddr_storage
impl Sync for sockaddr_storageimpl !Sync for addrinfo
impl !Sync for addrinfoimpl Sync for sockaddr_nl
impl Sync for sockaddr_nlimpl Sync for sockaddr_ll
impl Sync for sockaddr_llimpl Sync for fd_set
impl Sync for fd_setimpl !Sync for tm
impl !Sync for tmimpl Sync for in_addr
impl Sync for in_addrimpl Sync for in6_addr
impl Sync for in6_addrimpl Sync for ip_mreq
impl Sync for ip_mreqimpl Sync for ipv6_mreq
impl Sync for ipv6_mreqimpl !Sync for hostent
impl !Sync for hostentimpl !Sync for iovec
impl !Sync for iovecimpl Sync for pollfd
impl Sync for pollfdimpl Sync for winsize
impl Sync for winsizeimpl Sync for linger
impl Sync for lingerimpl !Sync for sigval
impl !Sync for sigvalimpl Sync for c_void
impl Sync for c_voidImplementors
impl<T> !Sync for *mut T where
T: ?Sized,impl Sync for AtomicU8impl<'a, T> Sync for sgx_tstd::slice::IterMut<'a, T> where
T: Sync,impl<T> !Sync for *const T where
T: ?Sized,impl<T> !Sync for NonNull<T> where
T: ?Sized,impl<T> Sync for AtomicPtr<T>impl Sync for AtomicI16impl<T> !Sync for RefCell<T> where
T: ?Sized,impl Sync for AtomicI64impl Sync for AtomicBoolimpl Sync for AtomicI32impl Sync for AtomicU64impl Sync for AtomicU32impl Sync for AtomicI8impl Sync for AtomicUsizeimpl Sync for AtomicU16impl<T> !Sync for Cell<T>impl Sync for AtomicIsizeimpl<T> !Sync for UnsafeCell<T> where
T: ?Sized,impl<'a, T> Sync for sgx_tstd::slice::Iter<'a, T> where
T: Sync,impl<'a> Sync for sgx_tstd::string::Drain<'a>impl<'a, T> Sync for sgx_tstd::collections::linked_list::IterMut<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::vec_deque::Drain<'a, T> where
T: Sync,impl<T> Sync for Arc<T> where
T: Send + Sync + ?Sized,impl<T> !Sync for sgx_tstd::rc::Weak<T> where
T: ?Sized,impl<T> Sync for sgx_tstd::sync::Weak<T> where
T: Send + Sync + ?Sized,impl<T> Sync for sgx_tstd::vec::IntoIter<T> where
T: Sync,impl<T> !Sync for Rc<T> where
T: ?Sized,impl<'a, T> Sync for sgx_tstd::collections::linked_list::Iter<'a, T> where
T: Sync,impl<T> Sync for LinkedList<T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::vec::Drain<'a, T> where
T: Sync,impl<T> Sync for LocalKeyInner<T>impl<T> Sync for Lazy<T>impl Sync for SgxThreadCondvarimpl Sync for SgxThreadMuteximpl<T: ?Sized + Send> Sync for SgxMutex<T>impl<'a, T: ?Sized + Sync> Sync for SgxMutexGuard<'a, T>impl Sync for SgxReentrantThreadMuteximpl<T: Send> Sync for SgxReentrantMutex<T>impl Sync for sgx_tstd::sync::Onceimpl Sync for SgxThreadRwLockimpl<T: ?Sized + Send + Sync> Sync for SgxRwLock<T>impl<'a, T: ?Sized + Sync> Sync for SgxRwLockReadGuard<'a, T>impl<'a, T: ?Sized + Sync> Sync for SgxRwLockWriteGuard<'a, T>impl Sync for SgxThreadSpinlockimpl Sync for SgxSpinlock
Auto implementors
impl Sync for isizeimpl Sync for i8impl Sync for i16impl Sync for i32impl Sync for i64impl Sync for i128impl Sync for usizeimpl Sync for u8impl Sync for u16impl Sync for u32impl Sync for u64impl Sync for u128impl Sync for f32impl Sync for f64impl Sync for charimpl Sync for strimpl Sync for strimpl Sync for TypeIdimpl Sync for BorrowErrorimpl Sync for BorrowMutErrorimpl<'b, T> !Sync for Ref<'b, T>impl<'b, T> !Sync for RefMut<'b, T>impl Sync for sgx_tstd::cmp::Orderingimpl<T> Sync for Reverse<T> where
T: Sync,impl<H> Sync for BuildHasherDefault<H> where
H: Sync,impl Sync for SipHasherimpl<T> Sync for Rev<T> where
T: Sync,impl<I> Sync for Cloned<I> where
I: Sync,impl<I> Sync for Cycle<I> where
I: Sync,impl<I> Sync for StepBy<I> where
I: Sync,impl<A, B> Sync for sgx_tstd::iter::Chain<A, B> where
A: Sync,
B: Sync,impl<A, B> Sync for Zip<A, B> where
A: Sync,
B: Sync,impl<I, F> Sync for Map<I, F> where
F: Sync,
I: Sync,impl<I, P> Sync for Filter<I, P> where
I: Sync,
P: Sync,impl<I, F> Sync for FilterMap<I, F> where
F: Sync,
I: Sync,impl<I> Sync for Enumerate<I> where
I: Sync,impl<I> Sync for Peekable<I> where
I: Sync,
<I as Iterator>::Item: Sync,impl<I, P> Sync for SkipWhile<I, P> where
I: Sync,
P: Sync,impl<I, P> Sync for TakeWhile<I, P> where
I: Sync,
P: Sync,impl<I> Sync for Skip<I> where
I: Sync,impl<I> Sync for sgx_tstd::iter::Take<I> where
I: Sync,impl<I, St, F> Sync for Scan<I, St, F> where
F: Sync,
I: Sync,
St: Sync,impl<I, U, F> Sync for FlatMap<I, U, F> where
F: Sync,
I: Sync,
<U as IntoIterator>::IntoIter: Sync,impl<I> Sync for Flatten<I> where
I: Sync,
<<I as Iterator>::Item as IntoIterator>::IntoIter: Sync,impl<I> Sync for Fuse<I> where
I: Sync,impl<I, F> Sync for Inspect<I, F> where
F: Sync,
I: Sync,impl<T> Sync for sgx_tstd::iter::Empty<T> where
T: Sync,impl<F> Sync for RepeatWith<F> where
F: Sync,impl<A> Sync for sgx_tstd::iter::Repeat<A> where
A: Sync,impl<T> Sync for sgx_tstd::iter::Once<T> where
T: Sync,impl<T: ?Sized> Sync for PhantomData<T> where
T: Sync,impl Sync for Pinnedimpl<T> Sync for Discriminant<T>impl<T> Sync for ManuallyDrop<T> where
T: Sync,impl<'a, T: ?Sized> Sync for PinMut<'a, T> where
T: Sync,impl<Idx> Sync for sgx_tstd::ops::Range<Idx> where
Idx: Sync,impl<Y, R> Sync for GeneratorState<Y, R> where
R: Sync,
Y: Sync,impl<Idx> Sync for RangeToInclusive<Idx> where
Idx: Sync,impl<Idx> Sync for RangeTo<Idx> where
Idx: Sync,impl<Idx> Sync for RangeInclusive<Idx> where
Idx: Sync,impl Sync for RangeFullimpl<Idx> Sync for RangeFrom<Idx> where
Idx: Sync,impl<T> Sync for Bound<T> where
T: Sync,impl !Sync for TraitObjectimpl<T, E> Sync for Result<T, E> where
E: Sync,
T: Sync,impl<'a, T> Sync for sgx_tstd::result::Iter<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::result::IterMut<'a, T> where
T: Sync,impl<T> Sync for sgx_tstd::result::IntoIter<T> where
T: Sync,impl<T> Sync for Option<T> where
T: Sync,impl<'a, A> Sync for sgx_tstd::option::Iter<'a, A> where
A: Sync,impl<'a, A> Sync for sgx_tstd::option::IterMut<'a, A> where
A: Sync,impl<A> Sync for sgx_tstd::option::IntoIter<A> where
A: Sync,impl Sync for NoneErrorimpl Sync for EscapeUnicodeimpl Sync for sgx_tstd::char::EscapeDefaultimpl Sync for EscapeDebugimpl Sync for ToLowercaseimpl Sync for ToUppercaseimpl Sync for DecodeUtf16Errorimpl Sync for CharTryFromErrorimpl Sync for UnicodeVersionimpl<I> Sync for DecodeUtf8<I> where
I: Sync,impl<I> Sync for DecodeUtf16<I> where
I: Sync,impl Sync for ParseCharErrorimpl Sync for InvalidSequenceimpl<T: ?Sized> Sync for Box<T> where
T: Sync,impl<T: ?Sized> Sync for PinBox<T> where
T: Sync,impl<'a, B: ?Sized> Sync for Cow<'a, B> where
B: Sync,
<B as ToOwned>::Owned: Sync,impl<'a, 'b> !Sync for DebugStruct<'a, 'b>impl<'a, 'b> !Sync for DebugList<'a, 'b>impl<'a, 'b> !Sync for DebugSet<'a, 'b>impl Sync for sgx_tstd::fmt::Alignmentimpl<'a, 'b> !Sync for DebugTuple<'a, 'b>impl<'a> !Sync for Arguments<'a>impl<'a> !Sync for Formatter<'a>impl Sync for sgx_tstd::fmt::Errorimpl<'a, 'b> !Sync for DebugMap<'a, 'b>impl<'a, T> Sync for Windows<'a, T> where
T: Sync,impl<'a, T, P> Sync for sgx_tstd::slice::RSplit<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T, P> Sync for sgx_tstd::slice::RSplitN<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T, P> Sync for SplitMut<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T, P> Sync for sgx_tstd::slice::SplitN<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T> Sync for Chunks<'a, T> where
T: Sync,impl<'a, T> Sync for ExactChunksMut<'a, T> where
T: Sync,impl<'a, T, P> Sync for sgx_tstd::slice::Split<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T> Sync for ExactChunks<'a, T> where
T: Sync,impl<'a, T, P> Sync for RSplitMut<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T> Sync for ChunksMut<'a, T> where
T: Sync,impl<'a, T, P> Sync for RSplitNMut<'a, T, P> where
P: Sync,
T: Sync,impl<'a, T, P> Sync for SplitNMut<'a, T, P> where
P: Sync,
T: Sync,impl<'a> Sync for sgx_tstd::str::Lines<'a>impl<'a, P> Sync for RMatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a> Sync for sgx_tstd::str::Bytes<'a>impl<'a, P> Sync for Matches<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a, P> Sync for sgx_tstd::str::RSplit<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a, P> Sync for sgx_tstd::str::RSplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl Sync for Utf8Errorimpl<'a> Sync for CharIndices<'a>impl<'a, P> Sync for RSplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl Sync for SearchStepimpl<'a> Sync for CharSearcher<'a>impl<'a, 'b> Sync for CharSliceSearcher<'a, 'b>impl<'a, F> Sync for CharPredicateSearcher<'a, F> where
F: Sync,impl<'a, 'b> Sync for StrSearcher<'a, 'b>impl Sync for ParseBoolErrorimpl<'a> Sync for EncodeUtf16<'a>impl<'a> Sync for sgx_tstd::str::Chars<'a>impl<'a, P> Sync for sgx_tstd::str::SplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a, P> Sync for sgx_tstd::str::Split<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a, P> Sync for SplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a, P> Sync for MatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a> Sync for LinesAny<'a>impl<'a> Sync for SplitAsciiWhitespace<'a>impl<'a, P> Sync for RMatches<'a, P> where
<P as Pattern<'a>>::Searcher: Sync,impl<'a> Sync for SplitWhitespace<'a>impl Sync for Stringimpl Sync for FromUtf8Errorimpl Sync for FromUtf16Errorimpl Sync for ParseErrorimpl<T> Sync for Vec<T> where
T: Sync,impl<'a, I> Sync for Splice<'a, I> where
I: Sync,
<I as Iterator>::Item: Sync,impl<'a, T, F> Sync for sgx_tstd::vec::DrainFilter<'a, T, F> where
F: Sync,
T: Sync,impl<T> Sync for LocalKey<T>impl Sync for AccessErrorimpl Sync for SgxThreadIdimpl Sync for SgxThreadimpl Sync for sgx_tstd::ascii::EscapeDefaultimpl<T> Sync for BinaryHeap<T> where
T: Sync,impl<K, V> Sync for BTreeMap<K, V> where
K: Sync,
V: Sync,impl<T> Sync for BTreeSet<T> where
T: Sync,impl<T> Sync for VecDeque<T> where
T: Sync,impl<'a, T> Sync for PeekMut<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::binary_heap::Iter<'a, T> where
T: Sync,impl<T> Sync for sgx_tstd::collections::binary_heap::IntoIter<T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::binary_heap::Drain<'a, T> where
T: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::Iter<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::VacantEntry<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::OccupiedEntry<'a, K, V> where
K: Sync,
V: Sync,impl<K, V> Sync for sgx_tstd::collections::btree_map::IntoIter<K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::IterMut<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::Keys<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::Entry<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::ValuesMut<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::Values<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for RangeMut<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::btree_map::Range<'a, K, V> where
K: Sync,
V: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::Range<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::Union<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::Iter<'a, T> where
T: Sync,impl<T> Sync for sgx_tstd::collections::btree_set::IntoIter<T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::SymmetricDifference<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::Intersection<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::btree_set::Difference<'a, T> where
T: Sync,impl<T> Sync for sgx_tstd::collections::linked_list::IntoIter<T> where
T: Sync,impl<'a, T, F> !Sync for sgx_tstd::collections::linked_list::DrainFilter<'a, T, F>impl<'a, T> Sync for sgx_tstd::collections::vec_deque::Iter<'a, T> where
T: Sync,impl<'a, T> Sync for sgx_tstd::collections::vec_deque::IterMut<'a, T> where
T: Sync,impl<T> Sync for sgx_tstd::collections::vec_deque::IntoIter<T> where
T: Sync,impl Sync for CollectionAllocErrimpl<K, V, S> Sync for HashMap<K, V, S> where
K: Sync,
S: Sync,
V: Sync,impl<T, S> Sync for HashSet<T, S> where
S: Sync,
T: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::Iter<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::IterMut<'a, K, V> where
K: Sync,
V: Sync,impl<K, V> Sync for sgx_tstd::collections::hash_map::IntoIter<K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::Keys<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::Values<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::Drain<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Sync for sgx_tstd::collections::hash_map::ValuesMut<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> !Sync for sgx_tstd::collections::hash_map::OccupiedEntry<'a, K, V>impl<'a, K, V> !Sync for sgx_tstd::collections::hash_map::VacantEntry<'a, K, V>impl Sync for RandomStateimpl Sync for DefaultHasherimpl<'a, K, V> !Sync for sgx_tstd::collections::hash_map::Entry<'a, K, V>impl<'a, K> Sync for sgx_tstd::collections::hash_set::Iter<'a, K> where
K: Sync,impl<K> Sync for sgx_tstd::collections::hash_set::IntoIter<K> where
K: Sync,impl<'a, K> Sync for sgx_tstd::collections::hash_set::Drain<'a, K> where
K: Sync,impl<'a, T, S> Sync for sgx_tstd::collections::hash_set::Intersection<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Sync for sgx_tstd::collections::hash_set::Difference<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Sync for sgx_tstd::collections::hash_set::SymmetricDifference<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Sync for sgx_tstd::collections::hash_set::Union<'a, T, S> where
S: Sync,
T: Sync,impl !Sync for Varsimpl !Sync for VarsOsimpl<'a> Sync for SplitPaths<'a>impl Sync for JoinPathsErrorimpl Sync for VarErrorimpl Sync for CStringimpl Sync for CStrimpl Sync for NulErrorimpl Sync for IntoStringErrorimpl Sync for FromBytesWithNulErrorimpl Sync for OsStringimpl Sync for OsStrimpl !Sync for SgxFileimpl Sync for sgx_tstd::sgxfs::OpenOptionsimpl<R> Sync for BufReader<R> where
R: Sync,impl<W> Sync for BufWriter<W> where
W: Sync,impl<W> Sync for LineWriter<W> where
W: Sync,impl<W> Sync for IntoInnerError<W> where
W: Sync,impl<T> Sync for Cursor<T> where
T: Sync,impl Sync for sgx_tstd::io::Errorimpl Sync for Sinkimpl Sync for sgx_tstd::io::Emptyimpl Sync for sgx_tstd::io::Repeatimpl Sync for Stdinimpl Sync for Stdoutimpl Sync for Stderrimpl<'a> Sync for StdoutLock<'a>impl<'a> Sync for StderrLock<'a>impl<'a> Sync for StdinLock<'a>impl Sync for Initializerimpl<T, U> Sync for sgx_tstd::io::Chain<T, U> where
T: Sync,
U: Sync,impl<T> Sync for sgx_tstd::io::Take<T> where
T: Sync,impl<R> Sync for sgx_tstd::io::Bytes<R> where
R: Sync,impl<R> Sync for sgx_tstd::io::Chars<R> where
R: Sync,impl<B> Sync for sgx_tstd::io::Split<B> where
B: Sync,impl<B> Sync for sgx_tstd::io::Lines<B> where
B: Sync,impl Sync for ErrorKindimpl Sync for SeekFromimpl Sync for CharsErrorimpl Sync for Ipv4Addrimpl Sync for Ipv6Addrimpl Sync for SocketAddrV4impl Sync for SocketAddrV6impl Sync for AddrParseErrorimpl Sync for IpAddrimpl Sync for Ipv6MulticastScopeimpl Sync for SocketAddrimpl Sync for Shutdownimpl Sync for FpCategoryimpl Sync for ParseIntErrorimpl Sync for ParseFloatErrorimpl Sync for TryFromIntErrorimpl<T> Sync for Wrapping<T> where
T: Sync,impl Sync for NonZeroU8impl Sync for NonZeroU16impl Sync for NonZeroU32impl Sync for NonZeroU64impl Sync for NonZeroU128impl Sync for NonZeroUsizeimpl Sync for sgx_tstd::os::raw::statimpl Sync for sgx_tstd::os::raw::c_voidimpl<'a> !Sync for PanicInfo<'a>impl<'a> Sync for Location<'a>impl<T> Sync for AssertUnwindSafe<T> where
T: Sync,impl<'a> Sync for PrefixComponent<'a>impl<'a> Sync for Components<'a>impl<'a> Sync for sgx_tstd::path::Iter<'a>impl<'a> Sync for Ancestors<'a>impl Sync for PathBufimpl Sync for Pathimpl Sync for StripPrefixErrorimpl<'a> Sync for Display<'a>impl<'a> Sync for Prefix<'a>impl<'a> Sync for Component<'a>impl Sync for ParsePathErrorimpl Sync for sgx_tstd::sync::atomic::Orderingimpl Sync for Barrierimpl Sync for BarrierWaitResultimpl Sync for SgxCondvarimpl<'a, T> Sync for SgxReentrantMutexGuard<'a, T> where
T: Send,impl Sync for OnceStateimpl<'a> Sync for SgxSpinlockGuard<'a>impl<T> Sync for PoisonError<T> where
T: Sync,impl<T> Sync for TryLockError<T> where
T: Sync,impl Sync for Durationimpl Sync for Instantimpl Sync for SystemTimeimpl Sync for SystemTimeErrorimpl Sync for SgxThreadPolicyimpl Sync for Fileimpl Sync for Metadataimpl Sync for sgx_tstd::untrusted::fs::OpenOptionsimpl Sync for Permissionsimpl Sync for FileType