13个版本
0.2.9 | 2023年10月7日 |
---|---|
0.2.7 | 2023年2月4日 |
0.2.4 | 2022年10月20日 |
0.2.2 | 2022年5月18日 |
0.2.1 | 2022年3月4日 |
#68 在 FFI 中
每月下载量 126
在 3 个crate中使用(直接使用2个)
2MB
69K SLoC
wstp
API文档 | 变更日志 | 贡献
该crate提供了一组安全且易于使用的WSTP库绑定,用于在程序之间传输Wolfram语言表达式。
快速示例
回环链接
将一个表达式写入回环Link
,然后从相同的链接对象读取它
use wstp::Link;
fn example() -> Result<(), wstp::Error> {
let mut link = Link::new_loopback()?;
// Write the expression {"a", "b", "c"}
link.put_function("System`List", 3)?;
link.put_str("a")?;
link.put_str("b")?;
link.put_str("c")?;
// Read back the expression, concatenating the elements as we go:
let mut buffer = String::new();
for _ in 0 .. link.test_head("System`List")? {
buffer.push_str(link.get_string_ref()?.as_str())
}
assert_eq!(buffer, "abc");
Ok(())
}
example();
全双工链接
将表达式 "hello!"
从一个Link
端点传输到另一个端点
use wstp::Protocol;
let (mut a, mut b) = wstp::channel(Protocol::SharedMemory).unwrap();
a.put_str("hello!").unwrap();
a.flush().unwrap();
assert_eq!(b.get_string().unwrap(), "hello!");
有关使用WSTP链接的示例,请参阅wolfram-library-link
,以将表达式传输到和从LibraryLink函数中。
构建 wstp
wstp
库使用 wolfram-app-discovery
来定位包含合适 WSTP SDK 复制的本地 Wolfram 语言安装。如果无法找到 WSTP SDK,wstp
将无法构建。
如果您已将 Wolfram 语言安装到 wolfram-app-discovery
所不知的位置,您可以通过设置 WOLFRAM_APP_DISCOVERY
环境变量手动指定安装位置。有关详细信息,请参阅 配置 wolfram-app-discovery。
相关链接
相关库
wolfram-library-link
— 作者库,可以被 Wolfram 语言动态加载wolfram-expr
— 在 Rust 中高效且易于使用的 Wolfram 表达式表示wolfram-app-discovery
— 用于定位本地 Wolfram 应用和 Wolfram 语言的实用工具
相关文档
开发者笔记
有关向 wstp
库贡献时执行常见开发任务的说明,请参阅 Development.md。
有关在 Wolfram 语言新版本发布时保持 wstp
更新的说明,请参阅 Maintenance.md。
许可证
根据您的选择,许可协议为以下之一
- Apache 许可证 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
注意:由 wstp 库链接的 WSTP 库的许可受 MathLink 许可协议 条款的约束。
贡献
除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何旨在包含在作品中的有意贡献,将根据上述许可协议双重许可,不附加任何额外条款或条件。
有关更多信息,请参阅 CONTRIBUTING.md。
依赖项
~0.5–4MB
~60K SLoC