6 个版本

0.1.0 2023 年 1 月 26 日
0.0.5 2022 年 12 月 18 日

#2#conveniently

每月 23 次下载

MIT 许可证

26KB
294

戴菲

戴菲是一个用于方便地将数据写入 csv 文件的 Rust crate。该 crate 旨在提供一个最小的接口,以便将数据保存到 csv,这样它不会成为程序的重要组成部分,最好只占用几行代码。

用法

以下展示了 delfi 的基本用法

use delfi::Dataset;

let t = vec![0.0, 1.0, 2.0];
let x = vec![0.0, 2.0, 6.0];
let dataset = Dataset::columns([t, x], ["time", "length"]);
dataset.save("./path/to/file.csv").unwrap();

或者您可以使用宏来编写更长的代码,但可能更易读

use delfi::dataset;

let t = vec![0.0, 1.0, 2.0];
let x = vec![0.0, 2.0, 6.0];
let dataset = dataset!{
    "time" => t,
    "length" => x,
};
dataset.save("./path/to/file.csv").unwrap();

它与任何可迭代的对象一起工作,只要它们是同一类型。以下是一个使用 ndarray 的示例

use delfi::dataset;
use ndarray::Array;

const N: usize = 1000;
let t = Array::linspace(0., 10., N+1);
let x = Array::logspace(10., 0., 2., N+1);

let dataset = dataset!{
    "time" => t,
    "length" => x,
};

dataset.save("./path/to/file.csv").unwrap();

特性:宏

目前正在努力允许结合多个类型的自定义数据结构。当前状态允许以下模式(也支持命名结构体)

use delfi::{Datapoint, Dataset};

#[derive(Datapoint)]
struct MyDatapoint(String, usize, f64);

let dp1 = MyDatapoint("Hello".to_owned(), 4, 10.2);
let dp2 = MyDatapoint("World".to_owned(), 5, 3.14);
let dataset = Dataset::from_datapoints([dp1, dp2]);

dataset.save("./path/to/file.csv").unwrap();

希望未来可以进一步扩展以允许更直观的构造函数。

依赖关系

~1.3–1.7MB
~21K SLoC