#julia #ndarray #jlrs

jlrs-ndarray

jlrs是一个围绕Julia C API绑定的库,它使Julia代码能够从Rust调用。jlrs可以将多种类型的数据从Rust移动到Julia,反之亦然,在语言之间共享多维数值数组,调用任意函数,并从任意的Julia源文件中加载代码。jlrs目前支持Linux和Windows。

4个版本 (2个破坏性更新)

0.3.0 2021年3月25日
0.2.0 2020年12月20日
0.1.1 2020年10月10日
0.1.0 2020年10月10日

#9 in #julia

MIT许可证

1.5MB
26K SLoC

将Julia数组借用为ndarrayArrayViewArrayViewMut

此crate定义了一个单一特质NdArray,它提供返回数组数据的不可变或可变视图的方法,并由jlrs中的ArrayTypedArray实现。

示例

use jlrs::prelude::*;
use jlrs_ndarray::NdArray;

fn main() {
    let mut julia = unsafe { Julia::init(16).unwrap() };
    julia.dynamic_frame(|_global, frame| {
        let mut data = vec![1usize, 2, 3, 4, 5, 6];
        let slice = &mut data.as_mut_slice();
        let borrowed = Value::borrow_array(frame, slice, (3, 2))?;

        let _array = borrowed.cast::<TypedArray<usize>>()?.array_view(frame)?;

        Ok(())
    }).unwrap();
}

lib.rs:

将Julia数组借用为ndarrayArrayViewArrayViewMut

此crate定义了一个单一特质NdArray,它提供返回数组数据的不可变或可变视图的方法,并由jlrs中的ArrayTypedArray实现。使用TypedArray使用此特质更容易,使用Array时,您可能需要提供类型注解。

依赖关系

~2.6–5MB
~99K SLoC