hotswap

Crates.io Linux Build Status Windows Build Status

A library for hotswapping running code with minimal effort, requires a nightly rust build.

Beware that the library is a prototype for now, and it may crash frequently.

Usage

Current Limitations

Example

```toml

Cargo.toml

[package] name = "hotswapdemo" version = "0.1.0"

[lib]

This must be the same as the package name (with hyphens replaced with

underscores). Anything else will cause an error at runtime.

name = "hotswapdemo" crate-type = ["dylib"] path = "src/main.rs"

[dependencies] hotswap = "" hotswap-runtime = "" ```

```rust // main.rs

![feature(plugin, const_fn)]

![plugin(hotswap)]

![hotswap_header]

use std::thread::sleep; use std::time::Duration;

[hotswap]

fn test(test: i32) -> () { println!("Foo: {}", test); }

fn main() { unsafe { hotswap_start!() }

let mut i = 1;
loop {
    test(i);
    i += 1;
    sleep(Duration::from_millis(2000));
}

}

```

That's it!

From there you can run the binary

```

cargo run Running target/debug/hotswapdemo Foo: 1 Foo: 2 Foo: 3 ```

Then, once it is running, you can edit the printing code, e.g.

rust println!("Bar: {} :)", test);

Once you recompile the code on another terminal (or on the same one using background), you'll see the changes!

```

cargo build --lib Compiling hotswapdemo v0.1.0 [...] fg Foo: 7 Foo: 8 Bar: 9 :) Bar: 10 :) ```

The running code will update without restarting the binary or losing state!

See Also