#[non_exhaustive]pub enum TransferReason {
Sale,
Return,
Remanufacturing,
Repurposing,
PreparationForReuse,
PreparationForRepurposing,
WasteHandover,
Import,
InsolvencySuccession,
}Expand description
The reason for a transfer of DPP responsibility.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Sale
Product sold to a new economic operator for market placement.
Return
Product returned to the supply chain (e.g. customer return).
Remanufacturing
Product sent for remanufacturing.
Repurposing
Product adapted for a different purpose.
PreparationForReuse
Product prepared for resale as second-hand.
PreparationForRepurposing
Waste product prepared so that it can serve a different purpose.
Distinct from Self::Repurposing, and the difference is the input,
not the outcome: Reg. (EU) 2023/1542 Art. 3(30) defines this over “a
waste battery, or parts thereof”, while Art. 3(31) defines repurposing
over “a battery, that is not a waste battery”. Art. 77(7) names all
four second-life operations, and this one was the only one of them
this enum could not express.
WasteHandover
The battery has become waste, and responsibility moves with it.
✅ COMPLIANCE-PIN: EU 2023/1542, Art. 77(7) second subparagraph (OJ L 191, 28.7.2023, p. 73) — responsibility passes to the producer, to the producer responsibility organisation where one is appointed under Art. 57(1), or to the waste management operator selected under Art. 57(8). The same subparagraph mandates no new passport, which is what distinguishes this handover from the four second-life operations.
Deliberately not folded into
SecondLifeOperation: that is a
different vocabulary. Those four describe second-life processing that
produces a new unit, whereas this records a waste handover on a record
that continues. Folding them would let the lineage-consent rule match a
waste handover against a derivation edge, which is not the consent that
rule is looking for.
Import
Product imported into the EU by a new importer.
InsolvencySuccession
Original operator became insolvent; responsibilities assumed by successor.
Implementations§
Source§impl TransferReason
impl TransferReason
Sourcepub const ALL: &'static [Self]
pub const ALL: &'static [Self]
Every reason this build models, for exhaustive iteration.
TransferReason is #[non_exhaustive], so a consumer outside this crate
cannot enumerate it, and one publishing an API description has to. See
crate::seal::SealFormat::ALL for the same contract: a reason
added later is deliberately not covered until it is added here.
Trait Implementations§
Source§impl Clone for TransferReason
impl Clone for TransferReason
Source§impl Debug for TransferReason
impl Debug for TransferReason
Source§impl<'de> Deserialize<'de> for TransferReason
impl<'de> Deserialize<'de> for TransferReason
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for TransferReason
Source§impl PartialEq for TransferReason
impl PartialEq for TransferReason
Source§impl Serialize for TransferReason
impl Serialize for TransferReason
impl StructuralPartialEq for TransferReason
Auto Trait Implementations§
impl Freeze for TransferReason
impl RefUnwindSafe for TransferReason
impl Send for TransferReason
impl Sync for TransferReason
impl Unpin for TransferReason
impl UnsafeUnpin for TransferReason
impl UnwindSafe for TransferReason
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.