13 个版本

0.5.4 2023年12月23日
0.5.3 2023年7月15日
0.5.2 2023年1月20日
0.5.0 2022年12月29日
0.3.1 2022年3月22日

#319数据库接口


用于 minetest-worldmapper

AGPL-3.0

1.5MB
1K SLoC

minetestworld

此 crate 允许您以低级方式读取 minetest 世界。

Build Crates.io Documentation dependency status

用法

由于此 crate 返回基于 async-std 的 futures,您必须在依赖项中指定它

[dependencies]
minetestworld = "0.5.3"
async-std = "1"

示例

以下是一个读取特定地图块所有节点的示例

[dependencies]
async-std = { version = "1", features = [ "attributes" ] }
minetestworld = "0.5.3"
use std::error::Error;
use async_std::task;
use async_std::stream::StreamExt;
use minetestworld::{World, Position};

#[async_std::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let world = World::open("TestWorld");
    let mapdata = world.get_map_data().await?;

    // Take the first mapblock position we can grab
    let mut positions = mapdata.all_mapblock_positions().await;
    let blockpos = positions.next().await.unwrap()?;

    // Iterate all nodes in that mapblock
    for (pos, node) in mapdata.iter_mapblock_nodes(blockpos).await? {
        let param0 = String::from_utf8(node.param0)?;
        println!("{pos:?}, {param0:?}");
    }
    Ok(())
}

可选功能

Cargo 功能 sqliteredispostgres 启用相应的地图数据后端。它们默认启用,可以单独选择

[dependencies]
minetestworld = { version = "0.5.3", default-features = false, features = [ "sqlite" ] }

如果未启用后端,此 crate 将无法编译,因为没有意义。

为了为 postgres 连接获得 TLS 支持,请添加 tls-rustlstls-native-tls 功能。

有关实际示例,请参阅 minetest-worldmapper

依赖项

~12–29MB
~483K SLoC