Rust binding for Everything's plugin SDK.
Features:
- Load and save config with Serde
- Make options pages GUI using Winio in MVU (Elm) architecture
- Log with tracing
Example:
mod options;
#[derive(Serialize, Deserialize, Debug, Default)]
pub struct Config {
s: String,
}
pub struct App {
config: Config,
}
impl PluginApp for App {
type Config = Config;
fn new(config: Option<Self::Config>) -> Self {
Self {
config: config.unwrap_or_default(),
}
}
fn config(&self) -> &Self::Config {
&self.config
}
fn into_config(self) -> Self::Config {
self.config
}
}
plugin_main!(App, {
PluginHandler::builder()
.name("Test Plugin")
.description("A test plugin for Everything")
.author("Chaoses-Ib")
.version("0.1.0")
.link("https://github.com/Chaoses-Ib/IbEverythingLib")
.options_pages(vec![
OptionsPage::builder()
.name("Test Plugin")
.load(ui::winio::spawn::<options::MainModel>)
.build(),
])
.build()
});
A C++17 implementation of Everything's (IPC) SDK.
- Higher performance. Compared with the official SDK, it reduces the query time by about 30%.
- Better asynchronous. Its sending blocking time is only 40% of the SDK. And it is based on
std::future
, which gives you more features about asynchronous. - Support named instances.
- Header-only and does not depend on the official DLL.
Rust bindings (depending on the official DLL) for Everything's (IPC) SDK: