This project provides safe and easy to use API bindings to Tcl programming language.
Features
-
Convert between Rust values and Tcl objects.
-
Serde data format of Tcl objects.
-
Run Tcl scripts.
-
Register Rust functions/closures as tcl commands.
Quickstart
std::Convert
between Rust values and Tcl objects.
use TryFrom;
use *;
let obj = from;
assert_eq!;
assert_eq!;
let obj = from;
assert_eq!;
assert_eq!;
assert_eq!;
let obj = from;
assert_eq!;
assert_eq!;
let v = vec!;
let obj: Obj = v.clone.into;
assert_eq!;
assert_eq!;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let obj: Obj = map.clone.into;
assert_eq!;
# Ok::
User-defined types deserialize
d / try_from
Tcl objects.
use *;
let obj = from;
let v: Struct = from_obj?;
assert_eq!;
let v: Struct = obj.clone.try_into?;
assert_eq!;
# Ok::
Use Tcl<T>
to store Rust values in Tcl Obj
s, an vice-vesa.
use TryFrom;
use *;
let obj = new_obj;
let tcl_obj = try_from?;
assert_eq!;
# Ok::
Run Tcl scripts
use *;
let interpreter = new?;
let a = 3;
let b = 7;
let c = interpreter.eval?;
assert_eq!;
# Ok::
Register Rust functions as tcl commands, the unsafe way
use *;
let interpreter = new?;
unsafe
let c = interpreter.eval?;
assert_eq!;
# Ok::
Register Rust functions as tcl commands, the safe way
use *;
let interpreter = new?;
let cmd = tclfn!;
let c = interpreter.eval?;
assert_eq!;
# Ok::
Register Rust closures as tcl commands
use *;
let offset = 0;
let interpreter = new?;
let cmd = tclosure!;
let a = 3;
let b = 7;
let c = interpreter.eval?;
assert_eq!;
# Ok::
License
Under Apache License 2.0 or MIT License, at your will.