pub enum FederatedCompositionMethod {
Basic,
AdvancedComposition,
FederatedMomentsAccountant,
RenyiDP,
ZCDP,
}Expand description
Federated composition methods.
Every variant treats the caller-supplied per-round (epsilon, delta) as a
black-box (ε, δ)-DP guarantee and composes it over round applications.
Mechanism-specific accountants (moments / RDP) that need the noise multiplier
σ and the sampling rate q cannot be reconstructed from (ε, δ) alone; for
tight per-step RDP accounting use crate::privacy::accountant instead.
Variants§
Basic
Basic (linear) composition: ε' = k·ε. Always a valid upper bound.
AdvancedComposition
Advanced composition (Dwork–Roth, Thm 3.20):
ε' = √(2k·ln(1/δ'))·ε + k·ε·(e^ε − 1), returned as min(ε', k·ε).
The caller’s delta plays the role of the advanced-composition slack δ';
the composed mechanism’s total failure probability is k·δ_round + δ'.
FederatedMomentsAccountant
Moments-accountant-style composition.
A true moments accountant needs σ and q, which (ε, δ) does not carry,
so this returns the conservative advanced-composition bound (an upper bound,
never an under-estimate). Use crate::privacy::accountant for tight RDP.
RenyiDP
Rényi-DP-style composition.
Like Self::FederatedMomentsAccountant, RDP needs σ/q; this returns the
conservative advanced-composition bound. Use crate::privacy::accountant.
ZCDP
Zero-concentrated DP composition.
Interprets the per-round (ε, δ) as a ρ-zCDP guarantee (the largest ρ
consistent with ε = ρ + 2√(ρ·ln(1/δ))), composes ρ_total = k·ρ, and
converts back. Only valid when the per-round mechanism really is ρ-zCDP
(e.g. Gaussian); otherwise prefer Self::AdvancedComposition.
Trait Implementations§
Source§impl Clone for FederatedCompositionMethod
impl Clone for FederatedCompositionMethod
Source§fn clone(&self) -> FederatedCompositionMethod
fn clone(&self) -> FederatedCompositionMethod
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for FederatedCompositionMethod
Source§impl Debug for FederatedCompositionMethod
impl Debug for FederatedCompositionMethod
Source§impl Default for FederatedCompositionMethod
impl Default for FederatedCompositionMethod
Source§fn default() -> FederatedCompositionMethod
fn default() -> FederatedCompositionMethod
impl Eq for FederatedCompositionMethod
impl StructuralPartialEq for FederatedCompositionMethod
Auto Trait Implementations§
impl Freeze for FederatedCompositionMethod
impl RefUnwindSafe for FederatedCompositionMethod
impl Send for FederatedCompositionMethod
impl Sync for FederatedCompositionMethod
impl Unpin for FederatedCompositionMethod
impl UnsafeUnpin for FederatedCompositionMethod
impl UnwindSafe for FederatedCompositionMethod
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.