45 releases (stable)
Uses new Rust 2024
| 1.15.1 | Feb 12, 2026 |
|---|---|
| 1.14.1 | Oct 23, 2025 |
| 1.12.1 | Jun 25, 2025 |
| 1.10.0 | Feb 28, 2025 |
| 0.2.1 | Mar 10, 2022 |
#1586 in GUI
961 downloads per month
Used in 6 crates
(4 directly)
5.5MB
108K
SLoC
Slint interpreter library
With this crate, you can load a .slint file at runtime and show its UI.
You only need to use this crate if you do not want to use pre-compiled .slint
code, which is the normal way to use Slint, using the slint crate
The entry point for this crate is the Compiler type, which you can
use to create CompilationResult with the Compiler::build_from_source or Compiler::build_from_path
functions. CompilationResult provides access to all components declared for export. Obtain a ComponentDefinition
for each and use [ComponentDefinition::create()] to instantiate a component. The returned ComponentInstance
in turn provides access to properties, callbacks, functions, global singletons, as well as implementing ComponentHandle.
Note about async functions
Compiling a component is async but in practice, this is only asynchronous if Compiler::set_file_loader
is set and its future is actually asynchronous. If that is not used, then it is fine to use a very simple
executor, such as the one provided by the spin_on crate
Examples
This example loads a .slint dynamically from a path and show errors if any:
use slint_interpreter::{ComponentDefinition, Compiler, ComponentHandle};
let compiler = Compiler::default();
let result = spin_on::spin_on(compiler.build_from_path("hello.slint"));
let diagnostics : Vec<_> = result.diagnostics().collect();
diagnostics.print();
if let Some(definition) = result.component("Foo") {
let instance = definition.create().unwrap();
instance.run().unwrap();
}
This example load a .slint from a string and set some properties:
use slint_interpreter::{ComponentDefinition, Compiler, Value, SharedString, ComponentHandle};
let code = r#"
export component MyWin inherits Window {
in property <string> my_name;
Text {
text: "Hello, " + my_name;
}
}
"#;
let mut compiler = Compiler::default();
let result =
spin_on::spin_on(compiler.build_from_source(code.into(), Default::default()));
assert_eq!(result.diagnostics().count(), 0);
let definition = result.component("MyWin");
let instance = definition.unwrap().create().unwrap();
instance.set_property("my_name", Value::from(SharedString::from("World"))).unwrap();
instance.run().unwrap();
Feature flags
document_features::document_features!())]
Dependencies
~18–70MB
~1M SLoC