8 个版本 (2 个重大变更)

1.0.0-alpha.42020年8月26日
1.0.0-alpha.32020年2月4日
1.0.0-alpha.22019年6月9日
1.0.0-alpha.12019年5月12日
0.1.1 2017年1月30日

#1112 in 数据库接口

每月 28 次下载
用于 kcore

Apache-2.0 许可

1MB
25K SLoC

C++ 14K SLoC // 0.1% comments C 6.5K SLoC // 0.1% comments Rust 5K SLoC // 0.0% comments Perl 115 SLoC // 0.0% comments D 40 SLoC // 0.1% comments Ruby 31 SLoC // 0.2% comments OCaml 14 SLoC Shell 8 SLoC Batch 3 SLoC Ruby HTML 2 SLoC

Couchbase Rust SDK

LICENSE Crates.io Version

这是官方、社区支持的 Couchbase Rust SDK 的仓库。它目前正在开发中,并基于 libcouchbase 构建。

要求

确保满足所有 libcouchbase 要求以正确构建。还需要满足 bindgen 要求。您需要 rust 版本为 1.77.2 或更高版本,因为此 SDK 严重使用了 async/await

安装

[dependencies]
couchbase = "1.0.0-alpha.5"

用法

examples 文件夹中还有更多示例,但这里是一个基本的 kv 操作入门示例

pub fn main() {
    // Connect to the cluster with a connection string and credentials
    let cluster = Cluster::connect("couchbase://127.0.0.1", "Administrator", "password");
    // Open a bucket
    let bucket = cluster.bucket("travel-sample");
    // Use the default collection (needs to be used for all server 6.5 and earlier)
    let collection = bucket.default_collection();

    // Fetch a document
    match block_on(collection.get("airline_10", GetOptions::default())) {
        Ok(r) => println!("get result: {:?}", r),
        Err(e) => println!("get failed! {}", e),
    };

    // Upsert a document as JSON
    let mut content = HashMap::new();
    content.insert("Hello", "Rust!");

    match block_on(collection.upsert("foo", content, UpsertOptions::default())) {
        Ok(r) => println!("upsert result: {:?}", r),
        Err(e) => println!("upsert failed! {}", e),
    };
}

示例

更多示例可以在 examples 文件夹中找到。如果某些示例不存在或无法展示您需要的内容,请提交一个工单。

不安全代码

此代码包含 unsafe {} 代码块。深呼吸,冷静下来,一切都会好起来的。我们使用不安全代码的原因是可以调用 libcouchbase,这是一个 C 库。唯一的不安全代码位于 IO 模块的 lcb 部分。因此,如果您遇到段错误,它很可能是从这里来的。我们正在努力将不安全代码保持在最低限度,但由于其本质,它无处不在。我们还在努力开发一个没有不安全代码的纯 Rust SDK(希望如此),但在它发货并成熟之前,我们必须忍受这个。

依赖

~5.5–9MB
~178K SLoC