Skip to main content

InvariantLegal

Struct InvariantLegal 

Source
pub struct InvariantLegal {
    pub article: &'static str,
    pub obligation: &'static str,
    pub porte_par: &'static str,
    pub atteste_par: Option<&'static str>,
    pub non_couverte: Option<&'static str>,
    pub delai_jours: Option<i64>,
}
Expand description

Un invariant légal porté par le domaine.

Fields§

§article: &'static str

L’article qui le fonde, tel qu’on le cite dans un courrier.

§obligation: &'static str

Ce que la loi exige, en une phrase lisible par un juriste.

§porte_par: &'static str

Le fichier du domaine qui le porte, relatif à src/.

§atteste_par: Option<&'static str>

Un test qui ATTESTE l’obligation — pas seulement qui existe.

None quand aucun test du dépôt ne vérifie réellement l’énoncé de l’obligation (#847) : dans ce cas, non_couverte dit pourquoi. Some et non_couverte: Some(_) en même temps sont contradictoires, et chaque_invariant_designe_un_test_qui_existe puis le contrôle dédié le refusent.

§non_couverte: Option<&'static str>

Pourquoi l’obligation n’est PAS couverte, quand atteste_par est None.

Ce n’est pas une case de confort : une obligation ne peut pas rester silencieuse sur son absence de preuve. Le message doit dire ce que le test le plus proche vérifie réellement (pour qu’on comprenne l’écart) et, si le correctif est déjà suivi ailleurs, par quelle issue.

§delai_jours: Option<i64>

Le délai que l’article impose, en jours, quand il en impose un.

── Pourquoi il vit ICI et pas dans l’interface ────────────────────

La remise de design veut afficher un décompte d’échéance à côté de chaque tâche : « 18 j sur 30 », avec la référence de l’article. Elle met en garde dans le même souffle :

Legal references are placeholders. The stated day counts (15 / 30) must be sourced from the project’s own registry, not hardcoded in components.

Un « 30 » écrit dans un composant Svelte est un nombre que rien ne relie à la loi. Le jour où le législateur le change — ou, plus probable, le jour où l’on découvre qu’on l’avait mal lu — le domaine est corrigé et l’écran continue d’annoncer l’ancien délai au syndic. Il agirait alors sur une échéance fausse en croyant lire le produit.

garde_delais_du_registre vérifie que chaque valeur ici correspond à la constante du module qui la porte.

None quand l’article n’impose aucun délai : la plupart des obligations sont des règles de fond, pas des échéances.

Trait Implementations§

Source§

impl Clone for InvariantLegal

Source§

fn clone(&self) -> InvariantLegal

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 InvariantLegal

Source§

impl Debug for InvariantLegal

Source§

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

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

impl Eq for InvariantLegal

Source§

impl PartialEq for InvariantLegal

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for InvariantLegal

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
§

impl<T> AsOut<T> for T
where T: Copy,

§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
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
§

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

§

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
§

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

§

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

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

impl<T> Fake for T

§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: RngExt + ?Sized, Self: FakeBase<U>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

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

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more