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 在 数据库接口
1.5MB
1K SLoC
minetestworld
此 crate 允许您以低级方式读取 minetest 世界。
用法
由于此 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 功能 sqlite
、redis
和 postgres
启用相应的地图数据后端。它们默认启用,可以单独选择
[dependencies]
minetestworld = { version = "0.5.3", default-features = false, features = [ "sqlite" ] }
如果未启用后端,此 crate 将无法编译,因为没有意义。
为了为 postgres
连接获得 TLS 支持,请添加 tls-rustls
或 tls-native-tls
功能。
有关实际示例,请参阅 minetest-worldmapper。
依赖项
~12–29MB
~483K SLoC