1 个不稳定版本

0.1.0 2023 年 9 月 26 日

#2101数据库接口


用于 datagen-rs-cli

MIT 许可证

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);
}

元素数量的计算方式

进度是通过首先生成模式中所有数组的长度的列表来计算的。

如果数组长度是固定值,则通过将固定值乘以数组中的元素数量来计算进度。这是一个递归过程,所以如果数组中包含另一个数组,则通过将数组长度乘以内数组的长度来计算进度。

如果数组长度是随机值,则通过生成介于最小值和最大值之间的随机值,并将此值存储在包含所有数组长度的列表中,然后将其乘以数组中的元素数量来计算数组长度。

还会考虑 objectsanyOf 中的元素数量。

依赖项

~6MB
~114K SLoC