2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018年11月19日 |
---|---|
0.1.0 | 2018年6月22日 |
#704 在 科学
36 每月下载量
2MB
1.5K SLoC
OpenSlide Rust
Rust 对 OpenSlide (https://openslide.org/) 的绑定。
此作品与官方 OpenSlide 项目无关联。
要求
此库是为以下构建的
OpenSlide 3.4.1
Rust 1.30
我不能保证它适用于其他版本。
构建 OpenSlide
从 https://openslide.org/download/ 下载 OpenSlide 3.4.1
到某个位置(此处,DOWNLOAD_DIR
)
在某处构建项目(此处,BUILD_DIR
)
cd BUILD_DIR
tar xvzf DOWNLOAD_DIR/openslide-3.4.1.tar.gz
cd openslide-3.4.1
./configure
make
sudo make install
在构建输出中,您将看到类似以下内容
Libraries have been installed in:
/usr/local/lib
为了使库可发现,我们将它(称为 LIB_DIR
)追加到环境变量 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:LIB_DIR
现在您应该能够编译并运行使用此 OpenSlide 绑定的项目。请参阅 examples
文件夹中的示例。
接口
此库提供了一种 原生 接口和一种更 方便 的接口。
原生接口
原生接口包含对 OpenSlide API 的原始绑定,没有任何冗余。此接口应接近原始库中的 C 接口,包括函数命名和文档。这至少有两个目的
1: 您可以轻松使用 C 库的文档 2: 如果您对我的便利包装不满意,您可以使用这个原始 API 创建自己的。
//! Example using the raw binding api
extern crate failure;
extern crate openslide;
use failure::Error;
use openslide::bindings;
fn main() -> Result<(), Error> {
let filename = "assets/CMU-1-Small-Region.svs";
let osr = bindings::open(filename)?;
let num_levels = bindings::get_level_count(osr)?;
println!("Slide has {} levels", num_levels);
bindings::close(osr);
Ok(())
}
请注意,对正确使用(如检查有效级别数量或非负缩放因子)的断言很少或没有。另外,如上例所示,您必须显式关闭幻灯片。
便利接口
便利接口封装了原生接口,并提供了更接近Rust风格的接口。这些封装将通过类型系统和其它检查来确保正确的使用。由于OpenSlide
结构体实现了Drop
特质,因此无需显式关闭已打开的幻灯片。
//! Example using the convenience binding api
extern crate failure;
extern crate openslide;
use std::path::Path;
use failure::Error;
use openslide::OpenSlide;
fn main() -> Result<(), Error> {
let filename = Path::new("assets/CMU-1-Small-Region.svs");
let os = openslide::OpenSlide::new(&filename)?;
let num_levels = os.get_level_count()?;
println!("Slide has {} levels", num_levels);
Ok(())
}
依赖项
~13MB
~88K SLoC