Trait HasMemoryCostStructural

Source
pub trait HasMemoryCostStructural {
    // Required method
    fn indirect_memory_cost(&self, _: EnabledToken) -> usize;
}
Expand description

Types whose HasMemoryCost is derived structurally

Usually implemented using #[derive_deftly(HasMemoryCost)].

For Copy types, it can also be implemented with memory_cost_structural_copy!.

When this trait is implemented, a blanket impl provides HasMemoryCost.

§Structural memory cost

We call the memory cost “structural” when it is derived from the type’s structure.

The memory cost of a HasMemoryCostStructural type is:

  • The number of bytes in its own size size_of; plus

  • The (structural) memory cost of all the out-of-line data that it owns; that’s what’s returned by indirect_memory_cost

For example, Strings out-of-line memory cost is just its capacity, so its memory cost is the size of its three word layout plus its capacity.

This calculation is performed by the blanket impl of HasMemoryCost.

§Shared data - non-'static types, Arc

It is probably a mistake to implement this trait (or HasMemoryCost) for types with out-of-line data that they don’t exclusively own. After all, the memory cost must be known and fixed, and if there is shared data it’s not clear how it should be accounted.

Required Methods§

Source

fn indirect_memory_cost(&self, _: EnabledToken) -> usize

Memory cost of data stored out-of-line

The total memory cost is the cost of the layout of self plus this.

Implementations on Foreign Types§

Source§

impl HasMemoryCostStructural for IpAddr

Source§

impl HasMemoryCostStructural for i8

Source§

impl HasMemoryCostStructural for i16

Source§

impl HasMemoryCostStructural for i32

Source§

impl HasMemoryCostStructural for i64

Source§

impl HasMemoryCostStructural for isize

Source§

impl HasMemoryCostStructural for u8

Source§

impl HasMemoryCostStructural for u16

Source§

impl HasMemoryCostStructural for u32

Source§

impl HasMemoryCostStructural for u64

Source§

impl HasMemoryCostStructural for ()

Source§

impl HasMemoryCostStructural for usize

Source§

impl HasMemoryCostStructural for String

Source§

impl HasMemoryCostStructural for Ipv4Addr

Source§

impl HasMemoryCostStructural for Ipv6Addr

Source§

impl HasMemoryCostStructural for NonZeroI8

Source§

impl HasMemoryCostStructural for NonZeroI16

Source§

impl HasMemoryCostStructural for NonZeroI32

Source§

impl HasMemoryCostStructural for NonZeroI64

Source§

impl HasMemoryCostStructural for NonZeroIsize

Source§

impl HasMemoryCostStructural for NonZeroU8

Source§

impl HasMemoryCostStructural for NonZeroU16

Source§

impl HasMemoryCostStructural for NonZeroU32

Source§

impl HasMemoryCostStructural for NonZeroU64

Source§

impl HasMemoryCostStructural for NonZeroUsize

Source§

impl<A: HasMemoryCostStructural> HasMemoryCostStructural for (A,)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural> HasMemoryCostStructural for (A, B)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural, V: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural, V: HasMemoryCostStructural, W: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural, V: HasMemoryCostStructural, W: HasMemoryCostStructural, X: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural, V: HasMemoryCostStructural, W: HasMemoryCostStructural, X: HasMemoryCostStructural, Y: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)

Source§

impl<A: HasMemoryCostStructural, B: HasMemoryCostStructural, C: HasMemoryCostStructural, D: HasMemoryCostStructural, E: HasMemoryCostStructural, F: HasMemoryCostStructural, G: HasMemoryCostStructural, H: HasMemoryCostStructural, I: HasMemoryCostStructural, J: HasMemoryCostStructural, K: HasMemoryCostStructural, L: HasMemoryCostStructural, M: HasMemoryCostStructural, N: HasMemoryCostStructural, O: HasMemoryCostStructural, P: HasMemoryCostStructural, Q: HasMemoryCostStructural, R: HasMemoryCostStructural, S: HasMemoryCostStructural, T: HasMemoryCostStructural, U: HasMemoryCostStructural, V: HasMemoryCostStructural, W: HasMemoryCostStructural, X: HasMemoryCostStructural, Y: HasMemoryCostStructural, Z: HasMemoryCostStructural> HasMemoryCostStructural for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z)

Source§

impl<T: HasMemoryCostStructural> HasMemoryCostStructural for Option<T>

Source§

impl<T: HasMemoryCostStructural> HasMemoryCostStructural for Box<T>

Source§

impl<T: HasMemoryCostStructural> HasMemoryCostStructural for Vec<T>

Source§

impl<T: HasMemoryCostStructural, const N: usize> HasMemoryCostStructural for [T; N]

Implementors§

impl HasMemoryCostStructural for AnyChanMsg

impl HasMemoryCostStructural for UnparsedRelayMsgInternal

impl HasMemoryCostStructural for IntroEstablishedExt

impl HasMemoryCostStructural for IntroduceAckExt

impl HasMemoryCostStructural for IntroduceExt

impl HasMemoryCostStructural for EstablishIntroExt

impl HasMemoryCostStructural for AnyRelayMsg

impl HasMemoryCostStructural for ResolvedVal

impl HasMemoryCostStructural for Address

impl HasMemoryCostStructural for AuthChallenge

impl HasMemoryCostStructural for Authenticate

impl HasMemoryCostStructural for Authorize

impl HasMemoryCostStructural for Certs

impl HasMemoryCostStructural for Create

impl HasMemoryCostStructural for Create2

impl HasMemoryCostStructural for CreateFast

impl HasMemoryCostStructural for Created

impl HasMemoryCostStructural for Created2

impl HasMemoryCostStructural for CreatedFast

impl HasMemoryCostStructural for Destroy

impl HasMemoryCostStructural for DestroyReason

impl HasMemoryCostStructural for HandshakeType

impl HasMemoryCostStructural for Netinfo

impl HasMemoryCostStructural for Padding

impl HasMemoryCostStructural for PaddingNegotiate

impl HasMemoryCostStructural for PaddingNegotiateCmd

impl HasMemoryCostStructural for Relay

impl HasMemoryCostStructural for RelayEarly

impl HasMemoryCostStructural for TorCert

impl HasMemoryCostStructural for Unrecognized

impl HasMemoryCostStructural for Versions

impl HasMemoryCostStructural for Vpadding

impl HasMemoryCostStructural for ChanCmd

impl HasMemoryCostStructural for ConfluxLink

impl HasMemoryCostStructural for ConfluxLinked

impl HasMemoryCostStructural for ConfluxLinkedAck

impl HasMemoryCostStructural for ConfluxSwitch

impl HasMemoryCostStructural for Link

impl HasMemoryCostStructural for V1DesiredUx

impl HasMemoryCostStructural for V1LinkPayload

impl HasMemoryCostStructural for V1Nonce

impl HasMemoryCostStructural for DosParams

impl HasMemoryCostStructural for EstablishIntro

impl HasMemoryCostStructural for EstablishIntroDetails

impl HasMemoryCostStructural for AuthKeyType

impl HasMemoryCostStructural for EstablishRendezvous

impl HasMemoryCostStructural for IntroEstablished

impl HasMemoryCostStructural for Introduce

impl HasMemoryCostStructural for Introduce1

impl HasMemoryCostStructural for Introduce2

impl HasMemoryCostStructural for IntroduceAck

impl HasMemoryCostStructural for IntroduceAckExtType

impl HasMemoryCostStructural for IntroduceAckStatus

impl HasMemoryCostStructural for IntroduceHeader

impl HasMemoryCostStructural for Rendezvous1

impl HasMemoryCostStructural for Rendezvous2

impl HasMemoryCostStructural for RendezvousEstablished

impl HasMemoryCostStructural for Begin

impl HasMemoryCostStructural for BeginDir

impl HasMemoryCostStructural for BeginFlags

impl HasMemoryCostStructural for Connected

impl HasMemoryCostStructural for Data

impl HasMemoryCostStructural for Drop

impl HasMemoryCostStructural for End

impl HasMemoryCostStructural for EndReason

impl HasMemoryCostStructural for Extend

impl HasMemoryCostStructural for Extend2

impl HasMemoryCostStructural for Extended

impl HasMemoryCostStructural for Extended2

impl HasMemoryCostStructural for Resolve

impl HasMemoryCostStructural for Resolved

impl HasMemoryCostStructural for Sendme

impl HasMemoryCostStructural for SendmeTag

impl HasMemoryCostStructural for Truncate

impl HasMemoryCostStructural for Truncated

impl HasMemoryCostStructural for Unrecognized

impl HasMemoryCostStructural for RelayCmd

impl HasMemoryCostStructural for StreamId

impl HasMemoryCostStructural for UnparsedRelayMsg

impl HasMemoryCostStructural for AddressPort

impl HasMemoryCostStructural for ConnectUdp

impl HasMemoryCostStructural for ConnectedUdp

impl HasMemoryCostStructural for Datagram

impl<ID> HasMemoryCostStructural for UnrecognizedExt<ID>
where ID: Copy + 'static,

impl<M> HasMemoryCostStructural for ChanCell<M>
where M: HasMemoryCostStructural,

impl<T> HasMemoryCostStructural for ExtList<T>
where T: HasMemoryCostStructural,

impl HasMemoryCostStructural for RendCookie

impl HasMemoryCostStructural for LinkSpec

impl HasMemoryCostStructural for EncodedLinkSpec

impl HasMemoryCostStructural for LinkSpecType

impl HasMemoryCostStructural for Ed25519Identity

impl HasMemoryCostStructural for ValidatableEd25519Signature

impl HasMemoryCostStructural for RsaIdentity

impl<const N: usize> HasMemoryCostStructural for CtByteArray<N>

impl HasMemoryCostStructural for IncomingStreamRequest

impl HasMemoryCostStructural for ClientCircChanMsg

impl HasMemoryCostStructural for HopNum

impl HasMemoryCostStructural for LegId

impl HasMemoryCostStructural for LegIdKey

impl HasMemoryCostStructural for StreamReqInfo

impl<const LOWER: i32, const UPPER: i32> HasMemoryCostStructural for BoundedInt32<LOWER, UPPER>