1 个不稳定版本
0.1.0 | 2023 年 9 月 26 日 |
---|
#2101 在 数据库接口
150KB
4K SLoC
progress-plugin
进度插件是一个提供生成过程进度的本地插件。
用法
使用进度插件的最简单方法是调用 ProgressPlugin::with_schema()
,同时提供一个模式和回调函数
use std::error::Error;
use datagen_rs::schema::schema_definition::Schema;
use progress_plugin::{PluginWithSchemaResult, ProgressPlugin};
use datagen_rs::util::helpers::generate_random_data;
fn generate(schema: Schema) -> Result<(), Box<dyn Error>> {
let PluginWithSchemaResult {
schema,
plugins,
} = ProgressPlugin::with_schema(schema, |current, total| {
println!("{} / {}", current, total);
})?;
let generated = generate_random_data(schema, Some(plugins))?;
println!("{}", generated);
}
元素数量的计算方式
进度是通过首先生成模式中所有数组的长度的列表来计算的。
如果数组长度是固定值,则通过将固定值乘以数组中的元素数量来计算进度。这是一个递归过程,所以如果数组中包含另一个数组,则通过将数组长度乘以内数组的长度来计算进度。
如果数组长度是随机值,则通过生成介于最小值和最大值之间的随机值,并将此值存储在包含所有数组长度的列表中,然后将其乘以数组中的元素数量来计算数组长度。
依赖项
~6MB
~114K SLoC