MaybeSync

Trait MaybeSync 

1.0.0 · Source
pub unsafe auto trait MaybeSync { }
Available on crate feature std only.
Expand description

Marker trait to optionally implement Sync under std.

This is not exported to bindings users as async is only supported in Rust. 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.

A shorter overview of how Sync and Send relate to referencing:

  • &T is Send if and only if T is Sync
  • &mut T is Send if and only if T is Send
  • &T and &mut T are Sync if and only if T is Sync

Types that are not Sync are those that have “interior mutability” in a non-thread-safe form, such as Cell and 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. 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.

Implementors§

1.0.0 · Source§

impl !Sync for Arguments<'_>

Source§

impl !Sync for LocalWaker

1.26.0 · Source§

impl !Sync for Args

1.26.0 · Source§

impl !Sync for ArgsOs

1.6.0 · Source§

impl Sync for alloc::string::Drain<'_>

1.0.0 · Source§

impl Sync for TypeId

Source§

impl Sync for Bytes<'_>

1.10.0 · Source§

impl Sync for Location<'_>

1.0.0 · Source§

impl Sync for AtomicBool

Available on target_has_atomic_load_store=8 only.
1.34.0 · Source§

impl Sync for AtomicI8

1.34.0 · Source§

impl Sync for AtomicI16

1.34.0 · Source§

impl Sync for AtomicI32

1.34.0 · Source§

impl Sync for AtomicI64

1.0.0 · Source§

impl Sync for AtomicIsize

1.34.0 · Source§

impl Sync for AtomicU8

1.34.0 · Source§

impl Sync for AtomicU16

1.34.0 · Source§

impl Sync for AtomicU32

1.34.0 · Source§

impl Sync for AtomicU64

1.0.0 · Source§

impl Sync for AtomicUsize

1.36.0 · Source§

impl Sync for Waker

1.44.0 · Source§

impl<'a> Sync for IoSlice<'a>

1.44.0 · Source§

impl<'a> Sync for IoSliceMut<'a>

Source§

impl<'a, 'b, K, Q, V, S, A> Sync for OccupiedEntryRef<'a, 'b, K, Q, V, S, A>
where K: Sync, Q: Sync + ?Sized, V: Sync, S: Sync, A: Sync + Allocator + Clone,

Source§

impl<'a, T, const CAP: usize> Sync for arrayvec::arrayvec::Drain<'a, T, CAP>
where T: Sync,

Source§

impl<C> Sync for Secp256k1<C>
where C: Context,

Source§

impl<Dyn> Sync for DynMetadata<Dyn>
where Dyn: ?Sized,

Source§

impl<K, V, S, A> Sync for lightning::util::hash_tables::hash_map::OccupiedEntry<'_, K, V, S, A>
where K: Sync, V: Sync, S: Sync, A: Sync + Allocator + Clone,

Source§

impl<K, V, S, A> Sync for RawOccupiedEntryMut<'_, K, V, S, A>
where K: Sync, V: Sync, S: Sync, A: Sync + Allocator + Clone,

1.0.0 · Source§

impl<T> !Sync for *const T
where T: ?Sized,

1.0.0 · Source§

impl<T> !Sync for *mut T
where T: ?Sized,

1.70.0 · Source§

impl<T> !Sync for OnceCell<T>

1.0.0 · Source§

impl<T> !Sync for Cell<T>
where T: ?Sized,

1.0.0 · Source§

impl<T> !Sync for RefCell<T>
where T: ?Sized,

1.0.0 · Source§

impl<T> !Sync for UnsafeCell<T>
where T: ?Sized,

1.25.0 · Source§

impl<T> !Sync for NonNull<T>
where T: ?Sized,

NonNull pointers are not Sync because the data they reference may be aliased.

1.0.0 · Source§

impl<T> !Sync for std::sync::mpsc::Receiver<T>

Source§

impl<T> Sync for ThinBox<T>
where T: Sync + ?Sized,

ThinBox<T> is Sync if T is Sync because the data is owned.

1.0.0 · Source§

impl<T> Sync for alloc::collections::linked_list::Iter<'_, T>
where T: Sync,

1.0.0 · Source§

impl<T> Sync for alloc::collections::linked_list::IterMut<'_, T>
where T: Sync,

Source§

impl<T> Sync for SyncUnsafeCell<T>
where T: Sync + ?Sized,

1.28.0 · Source§

impl<T> Sync for NonZero<T>

Source§

impl<T> Sync for UnsafePinned<T>
where T: Sync + ?Sized,

1.31.0 · Source§

impl<T> Sync for ChunksExactMut<'_, T>
where T: Sync,

1.0.0 · Source§

impl<T> Sync for ChunksMut<'_, T>
where T: Sync,

1.0.0 · Source§

impl<T> Sync for core::slice::iter::Iter<'_, T>
where T: Sync,

1.0.0 · Source§

impl<T> Sync for core::slice::iter::IterMut<'_, T>
where T: Sync,

1.31.0 · Source§

impl<T> Sync for RChunksExactMut<'_, T>
where T: Sync,

1.31.0 · Source§

impl<T> Sync for RChunksMut<'_, T>
where T: Sync,

1.0.0 · Source§

impl<T> Sync for AtomicPtr<T>

Available on target_has_atomic_load_store=ptr only.
Source§

impl<T> Sync for Exclusive<T>
where T: ?Sized,

Source§

impl<T> Sync for std::sync::mpmc::Receiver<T>
where T: Send,

Source§

impl<T> Sync for std::sync::mpmc::Sender<T>
where T: Send,

1.72.0 · Source§

impl<T> Sync for std::sync::mpsc::Sender<T>
where T: Send,

Source§

impl<T> Sync for std::sync::nonpoison::mutex::MappedMutexGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for std::sync::nonpoison::mutex::Mutex<T>
where T: Send + ?Sized,

T must be Send for Mutex to be Sync. This ensures that the protected data can be accessed safely from multiple threads without causing data races or other unsafe behavior.

Mutex<T> provides mutable access to T to one thread at a time. However, it’s essential for T to be Send because it’s not safe for non-Send structures to be accessed in this manner. For instance, consider Rc, a non-atomic reference counted smart pointer, which is not Send. With Rc, we can have multiple copies pointing to the same heap allocation with a non-atomic reference count. If we were to use Mutex<Rc<_>>, it would only protect one instance of Rc from shared access, leaving other copies vulnerable to potential data races.

Also note that it is not necessary for T to be Sync as &T is only made available to one thread at a time if T is not Sync.

Source§

impl<T> Sync for std::sync::nonpoison::mutex::MutexGuard<'_, T>
where T: Sync + ?Sized,

T must be Sync for a MutexGuard<T> to be Sync because it is possible to get a &T from &MutexGuard (via Deref).

Source§

impl<T> Sync for std::sync::nonpoison::rwlock::MappedRwLockReadGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for std::sync::nonpoison::rwlock::MappedRwLockWriteGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for std::sync::nonpoison::rwlock::RwLock<T>
where T: Send + Sync + ?Sized,

Source§

impl<T> Sync for std::sync::nonpoison::rwlock::RwLockReadGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for std::sync::nonpoison::rwlock::RwLockWriteGuard<'_, T>
where T: Sync + ?Sized,

1.70.0 · Source§

impl<T> Sync for OnceLock<T>
where T: Sync + Send,

Source§

impl<T> Sync for std::sync::poison::mutex::MappedMutexGuard<'_, T>
where T: Sync + ?Sized,

1.0.0 · Source§

impl<T> Sync for std::sync::poison::mutex::Mutex<T>
where T: Send + ?Sized,

T must be Send for Mutex to be Sync. This ensures that the protected data can be accessed safely from multiple threads without causing data races or other unsafe behavior.

Mutex<T> provides mutable access to T to one thread at a time. However, it’s essential for T to be Send because it’s not safe for non-Send structures to be accessed in this manner. For instance, consider Rc, a non-atomic reference counted smart pointer, which is not Send. With Rc, we can have multiple copies pointing to the same heap allocation with a non-atomic reference count. If we were to use Mutex<Rc<_>>, it would only protect one instance of Rc from shared access, leaving other copies vulnerable to potential data races.

Also note that it is not necessary for T to be Sync as &T is only made available to one thread at a time if T is not Sync.

1.19.0 · Source§

impl<T> Sync for std::sync::poison::mutex::MutexGuard<'_, T>
where T: Sync + ?Sized,

T must be Sync for a MutexGuard<T> to be Sync because it is possible to get a &T from &MutexGuard (via Deref).

Source§

impl<T> Sync for std::sync::poison::rwlock::MappedRwLockReadGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for std::sync::poison::rwlock::MappedRwLockWriteGuard<'_, T>
where T: Sync + ?Sized,

1.0.0 · Source§

impl<T> Sync for std::sync::poison::rwlock::RwLock<T>
where T: Send + Sync + ?Sized,

1.23.0 · Source§

impl<T> Sync for std::sync::poison::rwlock::RwLockReadGuard<'_, T>
where T: Sync + ?Sized,

1.23.0 · Source§

impl<T> Sync for std::sync::poison::rwlock::RwLockWriteGuard<'_, T>
where T: Sync + ?Sized,

Source§

impl<T> Sync for ReentrantLock<T>
where T: Send + ?Sized,

Source§

impl<T> Sync for ReentrantLockGuard<'_, T>
where T: Sync + ?Sized,

1.29.0 · Source§

impl<T> Sync for JoinHandle<T>

1.0.0 · Source§

impl<T, A> !Sync for Rc<T, A>
where A: Allocator, T: ?Sized,

Source§

impl<T, A> !Sync for UniqueRc<T, A>
where A: Allocator, T: ?Sized,

1.4.0 · Source§

impl<T, A> !Sync for alloc::rc::Weak<T, A>
where A: Allocator, T: ?Sized,

Source§

impl<T, A> Sync for alloc::collections::linked_list::Cursor<'_, T, A>
where T: Sync, A: Allocator + Sync,

Source§

impl<T, A> Sync for CursorMut<'_, T, A>
where T: Sync, A: Allocator + Sync,

1.0.0 · Source§

impl<T, A> Sync for LinkedList<T, A>
where T: Sync, A: Allocator + Sync,

1.6.0 · Source§

impl<T, A> Sync for alloc::collections::vec_deque::drain::Drain<'_, T, A>
where T: Sync, A: Allocator + Sync,

1.0.0 · Source§

impl<T, A> Sync for Arc<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Sync,

Source§

impl<T, A> Sync for UniqueArc<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Sync,

1.4.0 · Source§

impl<T, A> Sync for alloc::sync::Weak<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Sync,

1.6.0 · Source§

impl<T, A> Sync for alloc::vec::drain::Drain<'_, T, A>
where T: Sync, A: Sync + Allocator,

1.0.0 · Source§

impl<T, A> Sync for alloc::vec::into_iter::IntoIter<T, A>
where T: Sync, A: Allocator + Sync,

1.80.0 · Source§

impl<T, F> Sync for LazyLock<T, F>
where T: Sync + Send, F: Send,

Auto implementors§

§

impl Sync for Direction

§

impl Sync for IntroductionNode

§

impl Sync for AsyncPaymentsContext

§

impl Sync for MessageContext

§

impl Sync for NextMessageHop

§

impl Sync for OffersContext

§

impl Sync for PaymentContext

§

impl Sync for ConfirmationTarget

§

impl Sync for Balance

§

impl Sync for BalanceSource

§

impl Sync for MonitorEvent

§

impl Sync for ChannelMonitorUpdateStatus

§

impl Sync for BumpTransactionEvent

§

impl Sync for ClosureReason

§

impl Sync for Event

§

impl Sync for FundingInfo

§

impl Sync for HTLCHandlingFailureReason

§

impl Sync for HTLCHandlingFailureType

§

impl Sync for InboundChannelFunds

§

impl Sync for PaidBolt12Invoice

§

impl Sync for PathFailure

§

impl Sync for PaymentFailureReason

§

impl Sync for PaymentPurpose

§

impl Sync for ErrorKind

§

impl Sync for HTLCClaim

§

impl Sync for ChannelShutdownState

§

impl Sync for InboundHTLCStateDetails

§

impl Sync for OutboundHTLCStateDetails

§

impl Sync for BlindedFailure

§

impl Sync for Bolt11PaymentError

§

impl Sync for Bolt12PaymentError

§

impl Sync for FailureCode

§

impl Sync for PendingHTLCRouting

§

impl Sync for ProbeSendFailure

§

impl Sync for RecentPaymentDetails

§

impl Sync for Retry

§

impl Sync for RetryableSendFailure

§

impl Sync for LocalHTLCFailureReason

§

impl Sync for SpliceContribution

§

impl Sync for DecodeError

§

impl Sync for ErrorAction

§

impl Sync for FundingLockedFlags

§

impl Sync for MessageSendEvent

§

impl Sync for NextFundingFlag

§

impl Sync for SocketAddress

§

impl Sync for SocketAddressParseError

§

impl Sync for HeldHtlcReplyPath

§

impl Sync for InvreqResponseInstructions

§

impl Sync for SignError

§

impl Sync for Amount

§

impl Sync for Quantity

§

impl Sync for Bolt12ParseError

§

impl Sync for Bolt12SemanticError

§

impl Sync for AsyncPaymentsMessage

§

impl Sync for DNSResolverMessage

§

impl Sync for Destination

§

impl Sync for MessageSendInstructions

§

impl Sync for SendError

§

impl Sync for SendSuccess

§

impl Sync for OffersMessage

§

impl Sync for EffectiveCapacity

§

impl Sync for NetworkUpdate

§

impl Sync for NodeAnnouncementInfo

§

impl Sync for Payee

§

impl Sync for UtxoLookupError

§

impl Sync for UtxoResult

§

impl Sync for Recipient

§

impl Sync for SpendableOutputDescriptor

§

impl Sync for MaxDustHTLCExposure

§

impl Sync for APIError

§

impl Sync for DefaultHashBuilder

§

impl Sync for Level

§

impl Sync for MonitorName

§

impl Sync for ShortChannelIdError

§

impl Sync for OutputSpendStatus

§

impl Sync for SpendingDelay

§

impl Sync for BlindedMessagePath

§

impl Sync for DNSResolverContext

§

impl Sync for MessageForwardNode

§

impl Sync for AsyncBolt12OfferContext

§

impl Sync for BlindedPayInfo

§

impl Sync for BlindedPaymentPath

§

impl Sync for Bolt12OfferContext

§

impl Sync for Bolt12RefundContext

§

impl Sync for ForwardTlvs

§

impl Sync for PaymentConstraints

§

impl Sync for PaymentForwardNode

§

impl Sync for PaymentRelay

§

impl Sync for ReceiveTlvs

§

impl Sync for TrampolineForwardTlvs

§

impl Sync for UnauthenticatedReceiveTlvs

§

impl Sync for BlindedHop

§

impl Sync for EmptyNodeIdLookUp

§

impl Sync for ChannelMonitorUpdate

§

impl Sync for HTLCUpdate

§

impl Sync for HolderCommitmentTransactionBalance

§

impl Sync for BestBlock

§

impl Sync for ClaimId

§

impl Sync for WatchedOutput

§

impl Sync for OutPoint

§

impl Sync for AnchorDescriptor

§

impl Sync for CoinSelection

§

impl Sync for Input

§

impl Sync for Utxo

§

impl Sync for ClaimedHTLC

§

impl Sync for ReplayEvent

§

impl Sync for Error

§

impl Sync for Sink

§

impl Sync for BuiltCommitmentTransaction

§

impl Sync for ChannelPublicKeys

§

impl Sync for ChannelTransactionParameters

§

impl Sync for ClosingTransaction

§

impl Sync for CommitmentTransaction

§

impl Sync for CounterpartyChannelTransactionParameters

§

impl Sync for CounterpartyCommitmentSecrets

§

impl Sync for HTLCOutputInCommitment

§

impl Sync for HolderCommitmentTransaction

§

impl Sync for TxCreationKeys

§

impl Sync for DelayedPaymentBasepoint

§

impl Sync for DelayedPaymentKey

§

impl Sync for HtlcBasepoint

§

impl Sync for HtlcKey

§

impl Sync for RevocationBasepoint

§

impl Sync for RevocationKey

§

impl Sync for ChannelCounterparty

§

impl Sync for ChannelDetails

§

impl Sync for CounterpartyForwardingInfo

§

impl Sync for InboundHTLCDetails

§

impl Sync for OutboundHTLCDetails

§

impl Sync for BlindedForward

§

impl Sync for Bolt11InvoiceParameters

§

impl Sync for ChainParameters

§

impl Sync for InterceptId

§

impl Sync for OptionalOfferPaymentParams

§

impl Sync for PaymentId

§

impl Sync for PendingHTLCInfo

§

impl Sync for PhantomRouteHints

§

impl Sync for RecipientOnionFields

§

impl Sync for FundingTxInput

§

impl Sync for ExpandedKey

§

impl Sync for AcceptChannel

§

impl Sync for AcceptChannelV2

§

impl Sync for AnnouncementSignatures

§

impl Sync for ChannelAnnouncement

§

impl Sync for ChannelParameters

§

impl Sync for ChannelReady

§

impl Sync for ChannelReestablish

§

impl Sync for ChannelUpdate

§

impl Sync for ClosingComplete

§

impl Sync for ClosingSig

§

impl Sync for ClosingSigned

§

impl Sync for ClosingSignedFeeRange

§

impl Sync for CommitmentSigned

§

impl Sync for CommitmentUpdate

§

impl Sync for CommonAcceptChannelFields

§

impl Sync for CommonOpenChannelFields

§

impl Sync for ErrorMessage

§

impl Sync for FinalOnionHopData

§

impl Sync for FundingCreated

§

impl Sync for FundingLocked

§

impl Sync for FundingSigned

§

impl Sync for GossipTimestampFilter

§

impl Sync for Init

§

impl Sync for LightningError

§

impl Sync for NextFunding

§

impl Sync for NodeAnnouncement

§

impl Sync for OnionMessage

§

impl Sync for OnionPacket

§

impl Sync for OpenChannel

§

impl Sync for OpenChannelV2

§

impl Sync for PeerStorage

§

impl Sync for PeerStorageRetrieval

§

impl Sync for Ping

§

impl Sync for Pong

§

impl Sync for QueryChannelRange

§

impl Sync for QueryShortChannelIds

§

impl Sync for ReplyChannelRange

§

impl Sync for ReplyShortChannelIdsEnd

§

impl Sync for RevokeAndACK

§

impl Sync for Shutdown

§

impl Sync for SpliceAck

§

impl Sync for SpliceInit

§

impl Sync for SpliceLocked

§

impl Sync for StartBatch

§

impl Sync for Stfu

§

impl Sync for TrampolineOnionPacket

§

impl Sync for TxAbort

§

impl Sync for TxAckRbf

§

impl Sync for TxAddInput

§

impl Sync for TxAddOutput

§

impl Sync for TxComplete

§

impl Sync for TxInitRbf

§

impl Sync for TxRemoveInput

§

impl Sync for TxRemoveOutput

§

impl Sync for TxSignatures

§

impl Sync for UnsignedChannelAnnouncement

§

impl Sync for UnsignedChannelUpdate

§

impl Sync for UnsignedNodeAnnouncement

§

impl Sync for UpdateAddHTLC

§

impl Sync for UpdateFailHTLC

§

impl Sync for UpdateFailMalformedHTLC

§

impl Sync for UpdateFee

§

impl Sync for UpdateFulfillHTLC

§

impl Sync for WarningMessage

§

impl Sync for InboundHTLCErr

§

impl Sync for DecryptedOurPeerStorage

§

impl Sync for EncryptedOurPeerStorage

§

impl Sync for ErroringMessageHandler

§

impl Sync for IgnoringMessageHandler

§

impl Sync for PeerDetails

§

impl Sync for PeerHandleError

§

impl Sync for InvalidShutdownScript

§

impl Sync for ShutdownScript

§

impl Sync for ChannelId

§

impl Sync for AsyncReceiveOfferCache

§

impl Sync for Bolt12Invoice

§

impl Sync for DerivedSigningPubkey

§

impl Sync for ExplicitSigningPubkey

§

impl Sync for UnsignedBolt12Invoice

§

impl Sync for ErroneousField

§

impl Sync for InvoiceError

§

impl Sync for InvoiceRequest

§

impl Sync for InvoiceRequestFields

§

impl Sync for UnsignedInvoiceRequest

§

impl Sync for VerifiedInvoiceRequest

§

impl Sync for TaggedHash

§

impl Sync for Nonce

§

impl Sync for CurrencyCode

§

impl Sync for CurrencyCodeError

§

impl Sync for DerivedMetadata

§

impl Sync for ExplicitMetadata

§

impl Sync for Offer

§

impl Sync for OfferFromHrn

§

impl Sync for OfferId

§

impl Sync for Refund

§

impl Sync for StaticInvoice

§

impl Sync for UnsignedStaticInvoice

§

impl Sync for HeldHtlcAvailable

§

impl Sync for OfferPaths

§

impl Sync for OfferPathsRequest

§

impl Sync for ReleaseHeldHtlc

§

impl Sync for ServeStaticInvoice

§

impl Sync for StaticInvoicePersisted

§

impl Sync for DNSSECProof

§

impl Sync for DNSSECQuery

§

impl Sync for HumanReadableName

§

impl Sync for OMNameResolver

§

impl Sync for NullMessageRouter

§

impl Sync for OnionMessagePath

§

impl Sync for Responder

§

impl Sync for ResponseInstruction

§

impl Sync for Packet

§

impl Sync for ChannelInfo

§

impl Sync for ChannelUpdateInfo

§

impl Sync for NodeAlias

§

impl Sync for NodeAnnouncementDetails

§

impl Sync for NodeId

§

impl Sync for NodeInfo

§

impl Sync for RoutingFees

§

impl Sync for BlindedTail

§

impl Sync for InFlightHtlcs

§

impl Sync for Path

§

impl Sync for PaymentParameters

§

impl Sync for Route

§

impl Sync for RouteHint

§

impl Sync for RouteHintHop

§

impl Sync for RouteHop

§

impl Sync for RouteParameters

§

impl Sync for RouteParametersConfig

§

impl Sync for TrampolineHop

§

impl Sync for ChannelLiquidities

§

impl Sync for ChannelUsage

§

impl Sync for FixedPenaltyScorer

§

impl Sync for ProbabilisticScoringDecayParameters

§

impl Sync for ProbabilisticScoringFeeParameters

§

impl Sync for UtxoFuture

§

impl Sync for ChannelDerivationParameters

§

impl Sync for DelayedPaymentOutputDescriptor

§

impl Sync for HTLCDescriptor

§

impl Sync for InMemorySigner

§

impl Sync for KeysManager

§

impl Sync for PeerStorageKey

§

impl Sync for PhantomKeysManager

§

impl Sync for RandomBytes

§

impl Sync for ReceiveAuthKey

§

impl Sync for StaticPaymentOutputDescriptor

§

impl Sync for AnchorChannelReserveContext

§

impl Sync for ChannelConfig

§

impl Sync for ChannelConfigOverrides

§

impl Sync for ChannelConfigUpdate

§

impl Sync for ChannelHandshakeConfig

§

impl Sync for ChannelHandshakeConfigUpdate

§

impl Sync for ChannelHandshakeLimits

§

impl Sync for UserConfig

§

impl Sync for RandomState

§

impl Sync for UpdateName

§

impl Sync for BigSize

§

impl Sync for CollectionLength

§

impl Sync for Hostname

§

impl Sync for LengthCalculatingWriter

§

impl Sync for TrackedSpendableOutput

§

impl Sync for Future

§

impl Sync for Notifier

§

impl Sync for Sleeper

§

impl Sync for String

§

impl Sync for Condvar

§

impl Sync for Instant

§

impl<'a> !Sync for Record<'a>

§

impl<'a> Sync for UnsignedGossipMessage<'a>

§

impl<'a> Sync for CandidateRouteHop<'a>

§

impl<'a> Sync for DirectedChannelTransactionParameters<'a>

§

impl<'a> Sync for TrustedClosingTransaction<'a>

§

impl<'a> Sync for TrustedCommitmentTransaction<'a>

§

impl<'a> Sync for StaticInvoiceBuilder<'a>

§

impl<'a> Sync for DirectedChannelInfo<'a>

§

impl<'a> Sync for ReadOnlyNetworkGraph<'a>

§

impl<'a> Sync for BlindedPathCandidate<'a>

§

impl<'a> Sync for FirstHopCandidate<'a>

§

impl<'a> Sync for OneHopBlindedPathCandidate<'a>

§

impl<'a> Sync for PrivateHopCandidate<'a>

§

impl<'a> Sync for PublicHopCandidate<'a>

§

impl<'a, 'b, K, Q, V, S, A> Sync for EntryRef<'a, 'b, K, Q, V, S, A>
where K: Sync, Q: Sync + ?Sized, V: Sync, S: Sync, A: Sync,

§

impl<'a, 'b, K, Q, V, S, A> Sync for VacantEntryRef<'a, 'b, K, Q, V, S, A>
where K: Sync, Q: Sync + ?Sized, S: Sync, A: Sync, V: Sync,

§

impl<'a, 'b, T> Sync for InvoiceRequestBuilder<'a, 'b, T>

§

impl<'a, ChannelSigner> Sync for LockedChannelMonitor<'a, ChannelSigner>
where ChannelSigner: Send,

§

impl<'a, I, A> Sync for Splice<'a, I, A>
where I: Sync, <I as Iterator>::Item: Sync, A: Sync,

§

impl<'a, K, V> Sync for lightning::util::indexed_map::Entry<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for lightning::util::hash_tables::hash_map::Iter<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for lightning::util::hash_tables::hash_map::IterMut<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for Keys<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for Values<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for ValuesMut<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for lightning::util::indexed_map::OccupiedEntry<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for Range<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Sync for lightning::util::indexed_map::VacantEntry<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V, A> Sync for lightning::util::hash_tables::hash_map::Drain<'a, K, V, A>
where A: Copy + Sync, K: Sync, V: Sync,

§

impl<'a, K, V, F, A> Sync for DrainFilter<'a, K, V, F, A>
where F: Sync, A: Sync, K: Sync, V: Sync,

§

impl<'a, K, V, S, A> Sync for lightning::util::hash_tables::hash_map::Entry<'a, K, V, S, A>
where K: Sync, V: Sync, S: Sync, A: Sync,

§

impl<'a, K, V, S, A> Sync for RawEntryMut<'a, K, V, S, A>
where K: Sync, V: Sync, S: Sync, A: Sync,

§

impl<'a, K, V, S, A> Sync for OccupiedError<'a, K, V, S, A>
where V: Sync, K: Sync, S: Sync, A: Sync,

§

impl<'a, K, V, S, A> Sync for RawEntryBuilder<'a, K, V, S, A>
where S: Sync, A: Sync, K: Sync, V: Sync,

§

impl<'a, K, V, S, A> Sync for RawEntryBuilderMut<'a, K, V, S, A>
where S: Sync, A: Sync, K: Sync, V: Sync,

§

impl<'a, K, V, S, A> Sync for RawVacantEntryMut<'a, K, V, S, A>
where S: Sync, A: Sync, K: Sync, V: Sync,

§

impl<'a, K, V, S, A> Sync for lightning::util::hash_tables::hash_map::VacantEntry<'a, K, V, S, A>
where K: Sync, S: Sync, A: Sync, V: Sync,

§

impl<'a, L> Sync for WithContext<'a, L>
where L: Sync,

§

impl<'a, M, T> Sync for OfferBuilder<'a, M, T>
where M: Sync,

§

impl<'a, M, T, ES, NS, SP, F, R, MR, L> Sync for ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>
where ES: Sync, NS: Sync, SP: Sync, F: Sync, M: Sync, T: Sync, R: Sync, MR: Sync, L: Sync, <<SP as Deref>::Target as SignerProvider>::EcdsaSigner: Send,

§

impl<'a, R> Sync for Take<'a, R>
where R: Sync + ?Sized,

§

impl<'a, R> Sync for FixedLengthReader<'a, R>
where R: Sync,

§

impl<'a, R> Sync for ReadTrackingReader<'a, R>
where R: Sync,

§

impl<'a, S> Sync for InvoiceBuilder<'a, S>
where S: Sync,

§

impl<'a, S> Sync for ScorerAccountingForInFlightHtlcs<'a, S>
where S: Sync,

§

impl<'a, T> Sync for RefundBuilder<'a, T>

§

impl<'a, T, A> Sync for PeekMut<'a, T, A>
where A: Sync, T: Sync,

§

impl<'a, T, F, A> Sync for ExtractIf<'a, T, F, A>
where F: Sync, A: Sync, T: Sync,

§

impl<B, C, SP, L> Sync for BumpTransactionEventHandler<B, C, SP, L>
where B: Sync, C: Sync, SP: Sync, L: Sync,

§

impl<B, C, SP, L> Sync for BumpTransactionEventHandlerSync<B, C, SP, L>
where B: Sync, SP: Sync, L: Sync, C: Sync,

§

impl<B, D, E, F, K, L, O> Sync for OutputSweeper<B, D, E, F, K, L, O>
where B: Sync, E: Sync, O: Sync, D: Sync, K: Sync, L: Sync, F: Sync,

§

impl<B, D, E, F, K, L, O> Sync for OutputSweeperSync<B, D, E, F, K, L, O>
where B: Sync, E: Sync, O: Sync, L: Sync, F: Sync, D: Sync, K: Sync,

§

impl<CM, RM, OM, CustomM, SM> Sync for MessageHandler<CM, RM, OM, CustomM, SM>
where CM: Sync, RM: Sync, OM: Sync, CustomM: Sync, SM: Sync,

§

impl<ChannelSigner, C, T, F, L, P, ES> Sync for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where T: Sync, L: Sync, F: Sync, P: Sync, ES: Sync, C: Sync, ChannelSigner: Send,

§

impl<Descriptor, CM, RM, OM, L, CMH, NS, SM> Sync for PeerManager<Descriptor, CM, RM, OM, L, CMH, NS, SM>
where NS: Sync, L: Sync, CM: Sync, RM: Sync, OM: Sync, CMH: Sync, SM: Sync, Descriptor: Send + Sync,

§

impl<ES, NS, L, NL, MR, OMH, APH, DRH, CMH> Sync for OnionMessenger<ES, NS, L, NL, MR, OMH, APH, DRH, CMH>
where ES: Sync, NS: Sync, L: Sync, NL: Sync, MR: Sync, OMH: Sync, APH: Sync, DRH: Sync, CMH: Sync,

§

impl<G, L> Sync for CombinedScorer<G, L>
where G: Sync, L: Sync,

§

impl<G, L> Sync for ProbabilisticScorer<G, L>
where G: Sync, L: Sync,

§

impl<G, L, ES> Sync for DefaultMessageRouter<G, L, ES>
where G: Sync, ES: Sync,

§

impl<G, L, ES> Sync for NodeIdMessageRouter<G, L, ES>
where G: Sync, ES: Sync,

§

impl<G, L, ES, S, SP, Sc> Sync for DefaultRouter<G, L, ES, S, SP, Sc>
where G: Sync, L: Sync, ES: Sync, S: Sync, SP: Sync,

§

impl<G, U, L> Sync for P2PGossipSync<G, U, L>
where G: Sync, L: Sync, U: Send + Sync,

§

impl<K> Sync for KVStoreSyncWrapper<K>
where K: Sync,

§

impl<K, L, ES, SP, BI, FE> Sync for MonitorUpdatingPersister<K, L, ES, SP, BI, FE>
where <SP as Deref>::Target: Sized, <ES as Deref>::Target: Sized, L: Sync + Send, ES: Sync + Send, SP: Sync + Send, BI: Sync + Send, FE: Sync + Send, K: Sync + Send,

§

impl<K, S, L, ES, SP, BI, FE> Sync for AsyncPersister<K, S, L, ES, SP, BI, FE>
where <SP as Deref>::Target: Sized, <ES as Deref>::Target: Sized,

§

impl<K, S, L, ES, SP, BI, FE> Sync for MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>
where <SP as Deref>::Target: Sized, <ES as Deref>::Target: Sized, K: Sync + Send, L: Sync + Send, ES: Sync + Send, SP: Sync + Send, BI: Sync + Send, FE: Sync + Send,

§

impl<K, V> Sync for IndexedMap<K, V>
where K: Sync, V: Sync,

§

impl<K, V, A> Sync for lightning::util::hash_tables::hash_map::IntoIter<K, V, A>
where A: Sync, K: Sync, V: Sync,

§

impl<K, V, A> Sync for IntoKeys<K, V, A>
where A: Sync, K: Sync, V: Sync,

§

impl<K, V, A> Sync for IntoValues<K, V, A>
where A: Sync, K: Sync, V: Sync,

§

impl<K, V, S, A> Sync for HashMap<K, V, S, A>
where S: Sync, A: Sync, K: Sync, V: Sync,

§

impl<L> Sync for NetworkGraph<L>
where L: Sync,

§

impl<M, T, ES, NS, SP, F, R, MR, L> Sync for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where M: Sync, T: Sync, R: Sync, ES: Sync, NS: Sync, SP: Sync, L: Sync, F: Sync, MR: Sync, <<SP as Deref>::Target as SignerProvider>::EcdsaSigner: Send,

§

impl<MR, L> Sync for OffersMessageFlow<MR, L>
where MR: Sync, L: Sync,

§

impl<Signer> Sync for ChannelMonitor<Signer>
where Signer: Send,

§

impl<T> Sync for PeeledOnion<T>
where T: Sync,

§

impl<T> Sync for ParsedOnionMessageContents<T>
where T: Sync,

§

impl<T> Sync for lightning::io::Cursor<T>
where T: Sync,

§

impl<T> Sync for RequiredWrapper<T>
where T: Sync,

§

impl<T> Sync for UpgradableRequired<T>
where T: Sync,

§

impl<T> Sync for WithoutLength<T>
where T: Sync,

§

impl<T, A> Sync for Box<T, A>
where A: Sync, T: Sync + ?Sized,

§

impl<T, A> Sync for VecDeque<T, A>
where A: Sync, T: Sync,

§

impl<T, A> Sync for Vec<T, A>
where A: Sync, T: Sync,

§

impl<W, L> Sync for Wallet<W, L>

§

impl<W, L> Sync for WalletSync<W, L>