Skip to main content

Paragraph100Rule

Enum Paragraph100Rule 

Source
#[non_exhaustive]
pub enum Paragraph100Rule { OldPlantBeforeEeg2023, Eeg2017Negativpreis6h, BiomassTransition, SolarpaketITransition, Pre2016Bestandsschutz, KwkgTransition, BiomassOldFuelClassContinuation, HydropowerEcologicalModernization, SmallBiomassBelow150kw, AuctionPoenalTransition, MieterstromToGgvTransition, Eeg2012DegressionSchedule, }
Expand description

§100 EEG 2023 — Übergangsbestimmungen (transition rules).

Plants commissioned before 01.01.2023 often settle under the rules of the EEG version in force when they were commissioned (§100 Abs. 1 EEG 2023). This enum identifies which specific §100 subparagraph applies.

§Important caveat

§100 EEG 2023 has 36+ numbered subsections. This enum covers the most commonly encountered transition rules. For plant types not covered here, the caller must determine the applicable rule and supply the corresponding verguetungssatz_ct and eeg_gesetz directly.

Per §100 Abs. 1 EEG 2023, the applicable rules are determined by the transition provisions in force at the time — not a single universal rule.

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

OldPlantBeforeEeg2023

§100 Abs. 1 EEG 2023: old plants (commissioned before 01.01.2023) keep the EEG rules as of 31.12.2022 (= EEG 2021 rules) for the remaining Förderdauer.

§

Eeg2017Negativpreis6h

§100 Abs. 2 Nr. 13 EEG 2021: EEG 2017 plants keep the 6-hour §51 threshold (not EEG 2021’s 4-hour threshold) per §100 EEG 2021 Abs. 2 Nr. 13.

Used for plants commissioned 2016-01-01 to 2020-12-31.

§

BiomassTransition

§100 Abs. 3 EEG 2023: biomass transition — plants with biomass fuel changes after 01.01.2023 may use transitional fuel-class rules.

§

SolarpaketITransition

§100 Abs. 9 EEG 2023: Solarpaket I transitional — plants whose legal classification changed under the Solarpaket I (BGBl I 2024 Nr. 107) amendments. Use for Balkonkraftwerk / Stecker-PV reclassifications.

§

Pre2016Bestandsschutz

§100 Abs. 1 Satz 4 EEG 2017 Bestandsschutz: plants commissioned before 01.01.2016 are permanently exempt from §51 Negativpreisregel.

§

KwkgTransition

§100 KWKG: KWKG plants use the transitional rule from KWKG 2017 → 2023.

§

BiomassOldFuelClassContinuation

§100 Abs. 6 EEG 2023: biomass plants that received their EEG support under old §42–§44 rules continue at their original rates and with original fuel-class restrictions for the remainder of their Förderdauer.

Commonly applies to solid-biomass and biogas plants commissioned 2012–2020.

§

HydropowerEcologicalModernization

§100 Abs. 7 EEG 2023: hydropower plants that underwent ecological improvements retain extended Förderdauer from the modernization date rather than the original commissioning date.

§

SmallBiomassBelow150kw

§100 Abs. 11 EEG 2023: small biomass plants (≤150 kW) that are not subject to mandatory Direktvermarktung continue under old EEG 2017 feed-in tariff rules.

§

AuctionPoenalTransition

§100 Abs. 15/16 EEG 2023: auction-built plants whose commissioning deadline falls under transitional provisions receive extended Pönalen grace periods.

§

MieterstromToGgvTransition

§100 Abs. 26 EEG 2023: Solarpaket I — existing Mieterstrom buildings reclassified to Gemeinschaftliche Gebäudeversorgung (§42b) may continue under the old §21 Abs. 3 Mieterstrom rules for the remaining Förderdauer.

§

Eeg2012DegressionSchedule

§100 Abs. 2 Nr. 4 EEG 2021: EEG 2012/2014 plants retain the old §23 Abs. 4 degression schedule (not EEG 2017 §49 quarterly degression).

Implementations§

Source§

impl Paragraph100Rule

Source

pub fn implied_eeg_gesetz(self) -> Option<EegGesetz>

Returns the EegGesetz version implied by this §100 transition rule.

When Some, calculate_settlement uses this version for §51/§52 dispatch instead of the caller-supplied SettleInput.eeg_gesetz, preventing silent miscalculation when a Transitional rule is set without the matching eeg_gesetz being updated.

Returns None for rules that do not imply a specific EEG version — the caller’s eeg_gesetz is then used as-is.

Paragraph100RuleImplied EegGesetzReason
Pre2016BestandsschutzEeg2012§100 Abs. 1 Satz 4 EEG 2017 — §51 exempt forever
Eeg2017Negativpreis6hEeg20176h threshold, 500kW/3MW exemption
BiomassOldFuelClassContinuationEeg2017old §42–§44 fuel rules
SmallBiomassBelow150kwEeg2017small biomass keeps EEG 2017 FiT
OldPlantBeforeEeg2023Eeg2021§100 Abs. 1 EEG 2023 → EEG 2021 rules
all othersNonecaller’s eeg_gesetz applies

Trait Implementations§

Source§

impl Clone for Paragraph100Rule

Source§

fn clone(&self) -> Paragraph100Rule

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 Copy for Paragraph100Rule

Source§

impl Debug for Paragraph100Rule

Source§

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

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

impl Eq for Paragraph100Rule

Source§

impl Hash for Paragraph100Rule

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Paragraph100Rule

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Paragraph100Rule

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<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> 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> Same for T

Source§

type Output = T

Should always be Self
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.