3个稳定版本

2.0.0 2022年2月5日
1.0.1 2021年11月14日

#16 in #tcl


rtea中使用

MIT/Apache

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。

无运行时依赖