Skip to main content

OperatorRole

Enum OperatorRole 

Source
#[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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

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

Source

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.

Source

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

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OperatorRole

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for OperatorRole

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for OperatorRole

Source§

impl PartialEq for OperatorRole

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for OperatorRole

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for OperatorRole

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.