diff options
Diffstat (limited to 'rust/README.md')
| -rw-r--r-- | rust/README.md | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/rust/README.md b/rust/README.md new file mode 100644 index 00000000..1048f66d --- /dev/null +++ b/rust/README.md @@ -0,0 +1,35 @@ +# rust/ + +Shared Rust crates that power OpenCut across platforms (web via WASM, desktop natively). + +## Adding a new crate + +1. Create it under `rust/crates/` +2. Add `bridge` as a dependency +3. Annotate public functions with `#[export]` + +## How `#[export]` works + +```rust +use bridge::export; + +#[export] +pub fn round_to_frame(time: f64, fps: f64) -> f64 { + (time * fps).round() / fps +} +``` + +Without the `wasm` feature, the macro is a no-op. With `--features wasm`, it expands to: + +```rust +#[wasm_bindgen(js_name = "roundToFrame")] +pub fn round_to_frame(time: f64, fps: f64) -> f64 { ... } +``` + +Desktop uses the crates directly as Cargo dependencies. + +## Testing + +```bash +cargo test -p <crate> +``` |
