Skip to main content

ElectronicsData

Struct ElectronicsData 

Source
pub struct ElectronicsData {
Show 17 fields pub product_identifier: ProductIdentifier, pub product_category: DeviceType, pub energy_efficiency_class: EnergyEfficiencyClass, pub co2e_per_unit_kg: f64, pub repairability_score: Option<RepairabilityScore>, pub repairability_index_inputs: Option<RepairabilityIndexDeclaration>, pub index_scope_exclusion: Option<IndexScopeExclusion>, pub spare_parts_available: Option<bool>, pub repair_manual_url: Option<String>, pub disassembly_instructions_url: Option<String>, pub svhc_substances: Option<Vec<SvhcSubstance>>, pub rohs_compliant: Option<bool>, pub critical_raw_materials: Option<Vec<CriticalRawMaterial>>, pub recycled_content_pct: Option<f64>, pub standby_power_w: Option<f64>, pub expected_lifetime_years: Option<u32>, pub firmware_update_until: Option<DateTime<Utc>>,
}
Expand description

Electronics product group data.

Scope and applicability dates are held in the product group manifest (product-groups/electronics.json), not restated here.

Fields§

§product_identifier: ProductIdentifier

The unique product identifier for the product model, in whichever EN 18219 clause 5 scheme issued it — a 14-digit GTIN under scheme 1.

§product_category: DeviceType

Device type per EU Regulation (EU) 2023/1670 Art. 1(1).

§energy_efficiency_class: EnergyEfficiencyClass

EU energy label class (A–G) per Energy Labelling Regulation 2017/1369.

§co2e_per_unit_kg: f64

Whole-lifecycle carbon footprint in kg CO₂e per unit.

§repairability_score: Option<RepairabilityScore>

Repairability score (non-regulatory heuristic — not EN 45554 / EU 2023/1669). overall ≥ 6.0 = good; < 4.0 = fails minimum standard.

Not comparable to the enacted index. Where both are present they are two different numbers on two different scales, and only repairability_index_inputs feeds the one Reg. (EU) 2023/1669 defines.

§repairability_index_inputs: Option<RepairabilityIndexDeclaration>

The Annex IV point 5 parameters an operator declares, from which the enacted repairability index of Reg. (EU) 2023/1669 is computed.

✅ COMPLIANCE-PIN: EU 2023/1669, Annex IV point 5 (OJ L 214, 31.8.2023, p. 26). Declared values, not a score — see RepairabilityIndexDeclaration for why the two are kept apart, and for the Annex IX Table 10 verification tolerance that makes the split the same shape the Regulation itself describes.

None is the ordinary case and always will be for a device type the act does not reach. Nothing obliges a passport to carry this — the word “passport” does not occur in Reg. (EU) 2023/1669, which puts the index on the energy label and in the product information sheet.

§index_scope_exclusion: Option<IndexScopeExclusion>

A declaration that Art. 1(a) or Art. 1(b) of Reg. (EU) 2023/1669 carves this unit out of the index’s scope.

✅ COMPLIANCE-PIN: EU 2023/1669, Art. 1 (OJ L 214, 31.8.2023, p. 12). A rollable-display phone and a high-security smartphone are both DeviceType::Smartphone, so without this the index would be claimed over two product classes the Regulation expressly disclaims.

None means not excluded, never “unknown”: the carve-out is what removes the obligation, so an operator who declares nothing has claimed nothing, and reading silence as an exclusion would exempt a product on a missing field.

§spare_parts_available: Option<bool>

Whether spare parts are commercially available from the manufacturer.

§repair_manual_url: Option<String>

URL to the repair manual or repair information portal.

§disassembly_instructions_url: Option<String>

URL to disassembly / dismantling instructions.

§svhc_substances: Option<Vec<SvhcSubstance>>

SVHC substances present above 0.1% w/w (REACH Art. 33).

§rohs_compliant: Option<bool>

Whether the product complies with RoHS Directive 2011/65/EU.

§critical_raw_materials: Option<Vec<CriticalRawMaterial>>

Critical raw materials present (EU CRM Act 2024/1252).

§recycled_content_pct: Option<f64>

Recycled content as a percentage of total product weight (0.0–100.0).

§standby_power_w: Option<f64>

Standby power consumption in watts.

§expected_lifetime_years: Option<u32>

Expected product lifetime in years under normal use.

§firmware_update_until: Option<DateTime<Utc>>

Date until which firmware / software updates are guaranteed.

Trait Implementations§

Source§

impl Clone for ElectronicsData

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 ElectronicsData

Source§

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

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

impl<'de> Deserialize<'de> for ElectronicsData

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 PartialEq for ElectronicsData

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 ProductGroupPayload for ElectronicsData

Source§

fn model_identifier(&self) -> Option<&str>

This act defines no model identifier.

Source§

fn svhc_substances(&self) -> Option<&[SvhcSubstance]>

This group’s schema carries a REACH candidate-list declaration.

Source§

fn product_category(&self) -> Option<&str>

Reg. (EU) 2023/1670 Art. 1(1)’s four device types. Always present: the field is required and the enum is closed.

Source§

fn product_identifier(&self) -> Option<&ProductIdentifier>

The unique product identifier this record carries, in whichever EN 18219 clause 5 scheme issued it. Read more
Source§

fn gtin(&self) -> Option<&str>

The GS1 trade item number, when this record’s identifier was issued under EN 18219 scheme 1 and not otherwise. Read more
Source§

impl Serialize for ElectronicsData

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 ElectronicsData

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<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.