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日

#1961数据库接口

每月37次下载
用于 2 个Crates(通过 couchbase

Apache-2.0

3.5MB
82K SLoC

C++ 55K SLoC // 0.1% comments C 26K SLoC // 0.1% comments Rust 672 SLoC // 0.1% comments Perl 460 SLoC // 0.0% comments D 161 SLoC // 0.1% comments Ruby 127 SLoC // 0.2% comments OCaml 57 SLoC Shell 34 SLoC // 0.1% comments Batch 14 SLoC Ruby HTML 9 SLoC

Couchbase Rust SDK

LICENSE Crates.io Version

这是官方社区支持的Couchbase Rust SDK的仓库。它目前正在开发中,并建立在 libcouchbase 之上。

要求

确保满足所有 libcouchbase 要求,以正确构建它。还需要满足 bindgen 要求。您需要一个版本号不小于或等于 1.77.2 的rust版本,因为此SDK大量使用 async/await

安装

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

用法

示例文件夹中有更多示例,但这里是一个基本的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 {} 代码块。慢慢呼吸,冷静下来,一切都会好起来的。我们使用不安全代码的原因是我们可以调用C库 libcouchbase。唯一的非安全代码位于IO模块的lcb部分。因此,如果遇到段错误,很可能来自那里。我们正在努力将不安全代码保持在最小化,但根据其性质,它无处不在。我们还在开发一个没有不安全代码的纯Rust SDK(希望如此),但在此SDK发货并成熟之前,我们不得不忍受它。

依赖关系