3个稳定版本
2.0.0 | 2022年2月5日 |
---|---|
1.0.1 | 2021年11月14日 |
#16 in #tcl
在rtea中使用
11KB
116 行
rtea-proc
提供用于使rtea更易用的proc宏。特别是,它简化了一些初始化函数的操作。
lib.rs
:
rtea-proc提供宏以方便地封装TEA期望的初始化和卸载函数,无需处理extern "C"
或原始指针。
该库提供了简单的宏,可以方便地封装Rust的初始化和卸载函数,无需处理extern "C"
或原始指针。
示例
use rtea::{Interpreter, TclStatus, TclUnloadFlag}; // Implicit dependency of macro when invoked.
#[module_init(Example, "1.0.0")]
fn init(interp: &Interpreter) -> Result<TclStatus, String> {
safe_init(interp, args)?;
// Add additional commands that may not be safe for untrusted code...
Ok(TclStatus::Ok)
}
#[module_safe_init(Example, "1.0.0")]
fn safe_init(_interp: &Interpreter) -> Result<TclStatus, String> {
// Add commands that are safe even for untrusted code...
Ok(TclStatus::Ok)
}
#[module_unload(Example)]
fn unload(interp: &Interpreter) -> Result<TclStatus, String> {
safe_unload(interp, args)?;
// Remove the additional commands that were not considered "safe"...
Ok(TclStatus::Ok)
}
#[module_safe_unload(Example)]
fn safe_unload(_interp: &Interpreter) -> Result<TclStatus, String> {
// Remove the "safe" set of commands
Ok(TclStatus::Ok)
}
注意
此代码假定它扩展了Tcl,并将对Tcl API(意外的空指针、非UTF8字符串等)的任何违规视为无法恢复的错误,应该引发panic。