#[non_exhaustive]pub enum OperatorRole {
Manufacturer,
Importer,
Distributor,
AuthorisedRepresentative,
FulfilmentServiceProvider,
Remanufacturer,
Repurposer,
PreparerForReuse,
Repairer,
Recycler,
}Expand description
The role of an economic operator in the DPP supply chain.
Determines what DPP fields the operator may introduce or update, as specified by the applicable delegated act.
§Wider than Art. 4(2), on purpose
Art. 4(2) of Regulation (EU) 2019/1020 defines a closed set of four who may be the responsible operator: a manufacturer established in the Union; an importer, where the manufacturer is not; an authorised representative with a written mandate; and a fulfilment service provider established in the Union, where no other is. This enum holds those four and five more, because it also describes who a passport can be transferred to — a remanufacturer or a preparer for reuse takes over responsibility without being an Art. 4(2) designation, and a distributor appears in the chain while never being able to be the responsible operator at all.
ResponsibilityBasis is what narrows the set
where the narrowing matters.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Manufacturer
Original equipment manufacturer.
Importer
Imports the product into the EU market.
Distributor
Makes the product available on the market without altering it.
AuthorisedRepresentative
An EU-established entity authorised to act on behalf of a non-EU manufacturer.
FulfilmentServiceProvider
An EU-established provider of warehousing, packaging, addressing or dispatching for products it does not own.
Art. 4(2)(d) of Regulation (EU) 2019/1020 makes this operator the responsible one only “where no other economic operator as mentioned in points (a), (b) and (c) is established in the Union” — it is the fallback that stops a product having no answerable party at all. Missing from this enum until 2026-09-07, which left that case unexpressible.
Remanufacturer
Performs remanufacturing — restores the product to original or improved specifications.
Repurposer
Adapts the product for a different purpose than originally intended.
PreparerForReuse
Prepares a used product for resale (testing, cleaning, repair).
Repairer
Professional repairer with authorised DPP update rights.
Recycler
Processes end-of-life products for material recovery.
Implementations§
Source§impl OperatorRole
impl OperatorRole
Sourcepub const ALL: &'static [Self]
pub const ALL: &'static [Self]
Every role this build models, for exhaustive iteration.
OperatorRole 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 role
added later is deliberately not covered until it is added here.
Sourcepub const fn can_be_art_4_operator(&self) -> bool
pub const fn can_be_art_4_operator(&self) -> bool
Whether this role can be the responsible operator under Art. 4(2) of Regulation (EU) 2019/1020, which names four and only four.
Advisory rather than enforced: (a) and (b) carry conditions this type
cannot see — “established in the Union”, “where the manufacturer is not
established in the Union” — and (d) is conditional on the absence of the
other three. So a true here means “not excluded by role”, never “is the
Art. 4(2) operator”.
Trait Implementations§
Source§impl Clone for OperatorRole
impl Clone for OperatorRole
Source§impl Debug for OperatorRole
impl Debug for OperatorRole
Source§impl<'de> Deserialize<'de> for OperatorRole
impl<'de> Deserialize<'de> for OperatorRole
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 OperatorRole
Source§impl PartialEq for OperatorRole
impl PartialEq for OperatorRole
Source§impl Serialize for OperatorRole
impl Serialize for OperatorRole
impl StructuralPartialEq for OperatorRole
Auto Trait Implementations§
impl Freeze for OperatorRole
impl RefUnwindSafe for OperatorRole
impl Send for OperatorRole
impl Sync for OperatorRole
impl Unpin for OperatorRole
impl UnsafeUnpin for OperatorRole
impl UnwindSafe for OperatorRole
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.