pub enum RuntimeCrateSource {
Workspace,
Registry {
version: String,
},
}Expand description
How a generated project resolves the logicaffeine runtime crates.
Inside the monorepo we stage the crate sources beside the generated
program and path-depend on them (hackable, offline). An installed largo
has no checkout to stage from, so it version-depends on the published
crates.io releases pinned to this compiler’s OWN version — the generated
Rust and the runtime API can then never drift.
Variants§
Workspace
Monorepo checkout: stage sources under ./crates and path-depend.
Registry
Standalone install: depend on the crates.io releases at version.
Implementations§
Source§impl RuntimeCrateSource
impl RuntimeCrateSource
Sourcepub fn detect() -> Self
pub fn detect() -> Self
A monorepo checkout stages sources; anywhere else (an installed largo)
pulls the matching crates.io release at this compiler’s own version.
Sourcepub fn is_workspace(&self) -> bool
pub fn is_workspace(&self) -> bool
True inside a checkout (stage sources + path-depend); false for an
installed largo (nothing to copy — depend on crates.io).
Sourcepub fn system_dep(&self, features: &[&str]) -> String
pub fn system_dep(&self, features: &[&str]) -> String
The logicaffeine-system dependency line carrying features.
Sourcepub fn linux_engine_section(&self) -> String
pub fn linux_engine_section(&self) -> String
The target section every generated project ends its dependencies with: on Linux the runtime
carries io-uring, which cargo unifies with the features its [dependencies] line names,
so a compiled server has the thread-per-core io_uring engine and the UringVfs, and every
other target builds without them.
Auto Trait Implementations§
impl Freeze for RuntimeCrateSource
impl RefUnwindSafe for RuntimeCrateSource
impl Send for RuntimeCrateSource
impl Sync for RuntimeCrateSource
impl Unpin for RuntimeCrateSource
impl UnsafeUnpin for RuntimeCrateSource
impl UnwindSafe for RuntimeCrateSource
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.