Skip to content

vsrs/rsciter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description

Work in Progress License

This is unofficial Rust bindings for Sciter

Disclaimer

This is a work in progress library and is not yet ready for production use.

Differencies from rust-sciter

  • Never panics
  • Uses bindgen instead of hand-written code.
  • Utilizes Sciter's own functions for windows/application management.
  • The primary goal is not to provide a complete Sciter API, but to simplify the interaction between the backend (in Rust) and the frontend (Sciter.JS UI).

Exporting xfunctions (e.g. functions available via window.xcall)

#[rsciter::xmod] // mark the module, that's it!
mod NativeModule {
    pub fn append_log(id: u64, message: &str) { ... }
    pub fn user_name() -> String { ... }
}

JS side:

const sum = Window.this.xcall("sum", 12, 12);

For details, see this samples:

Sciter Object Model support

You can export entire backend module with a single #[rsciter::asset_ns] macro:

#[rsciter::asset_ns]
mod Db {
    // exported Db.open function
    pub fn open(path: &str, flags: u64) -> Object {...}

    // exported struct with fields
    pub struct Object {
        path: String,
        flags: u64,
    }

    // additionally export update method
    impl Object {
        pub fn update(&self, value: &str) -> UpdateRes {...}
    }

    // exported struct with `message` method
    struct UpdateRes(String);
    impl UpdateRes {
        pub fn message(&self) -> &str {
            &self.0
        }
    }
}

JS side:

const obj = Db.open("test.db", 4);
console.log(`open result: "${obj}, ${obj.path}, ${obj.flags}"`);
// open result: "[asset Object], test.db, 4"

const updateRes = obj.update("new data");
console.log(updateRes, updateRes.message);
// [asset UpdateRes] function () {
//    [native code]
// }

console.log(`Update result: "${updateRes.message()}"`);
// Update result: "Updating: `new data` for `test.db` with `4`"

SOM samples:

About

Unofficial Rust bindings for Sciter

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages