Program

Struct Program 

Source
pub struct Program {
    pub name: String,
    pub types: BTreeMap<Arc<str>, TyDecl>,
    pub traits: Vec<TraitSig>,
    pub impls: Vec<ImplSig>,
    pub own_types: Vec<Arc<str>>,
    pub imports: Vec<String>,
    pub defs: BTreeMap<Arc<str>, Def>,
    pub def_order: Vec<Arc<str>>,
    pub signals: Vec<SignalDecl>,
    pub tests: Vec<TestDef>,
    pub docs: BTreeMap<Arc<str>, Arc<str>>,
    pub identity: Option<IdentityDecl>,
}
Expand description

A checked module: everything the placement checker, the splitter and the runtime need.

Fields§

§name: String§types: BTreeMap<Arc<str>, TyDecl>§traits: Vec<TraitSig>

The trait declarations this module owns, in declaration order.

§impls: Vec<ImplSig>

The impl headers this module owns, in declaration order. Both cross a .becki: a call in another module cannot resolve item.pence() without knowing the trait and that the impl exists.

§own_types: Vec<Arc<str>>

The types this module declares, in declaration order. An imported type is usable here and published by the module that owns it, never by this one (§3.6).

§imports: Vec<String>

The interfaces this module was checked against.

§defs: BTreeMap<Arc<str>, Def>§def_order: Vec<Arc<str>>

Source order, so diagnostics and beck explain are stable.

§signals: Vec<SignalDecl>§tests: Vec<TestDef>§docs: BTreeMap<Arc<str>, Arc<str>>

The ## doc comment attached to each declaration, keyed by the name it documents: todos for a definition or signal, Todo for a type, Todo.text for a model field and Event.Toggled for a union variant (beck_syntax::doc).

A side table rather than a field on Def, because documentation is not something the checker, the solver or the runtime may read: nothing downstream of here may behave differently because a definition is documented.

§identity: Option<IdentityDecl>

identity = external(issuer="…") — who authenticates this program’s clients (D6).

On the Program rather than in the runtime’s configuration because it is a fact about the program that §6.5’s derivation needs: the issuer is a peer, and an egress rule is derived from the peers a program names. None is the default provider, which believes whatever a client says it is.

Trait Implementations§

Source§

impl Clone for Program

Source§

fn clone(&self) -> Program

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Program

Source§

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

Formats the value using the given formatter. Read more

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