This library generated from googleapis/googleapis using tonic-build.
This library contains all the code generated from the googleapis/googleapis.
When using each product API, you must explicitly include it in your build using a feature flag.
For example, if you want to use Cloud Pub/Sub, write features = ["google-pubsub-v1"]
to Cargo.toml.
The feature name is the period of the package name of each proto file, replaced by a hyphen.
If you specify a package, it will automatically load the dependent packages and include them in the build.
It means that features = ["google-spanner-admin-database-v1"]
is the same as the code below:
pub mod google {
pub mod api {
// generated code
}
pub mod iam {
pub mod v1 {
// generated code
}
}
pub mod longrunning {
// generated code
}
pub mod r#type {
// generated code
}
pub mod rpc {
// generated code
}
pub mod spanner {
pub mod admin {
pub mod database {
pub mod v1 {
// generated code
}
}
}
}
}
In addition, multiple features can be specified.
The list of available features can be found here.
google-api-proto | tonic | tonic-build |
---|---|---|
1.0.0 <= | 0.6.x | 0.6.x |
1.59.0 <= | 0.7.x | 0.7.x |
1.243.0 <= | 0.8.x | 0.8.x |
1.280.0 <= | 0.9.x | 0.9.x |
1.415.0 <= | 0.10.x | 0.10.x |
1.516.0 <= | 0.11.x | 0.11.x |
1.697.0 <= | 0.12.x | 0.12.x |
The complete code can be found here.
Cargo.toml:
[dependencies]
# For runtime
tokio = { version = "1.33.0", features = ["macros", "rt-multi-thread"] }
# For google authentication
google-authz = { version = "1.0.0-alpha.5", features = ["tonic"] }
# For gRPC
tonic = { version = "0.12.0", features = ["tls", "tls-webpki-roots"] }
prost = "0.13.1"
prost-types = "0.13.1"
google-api-proto = { version = "1", features = ["google-spanner-admin-database-v1"] }
main.rs:
use std::env;
use google_api_proto::google::spanner::admin::database::v1::{
database_admin_client::DatabaseAdminClient, ListDatabasesRequest,
};
use google_authz::GoogleAuthz;
use tonic::{transport::Channel, Request};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let project = "google project id";
let instance = "spanner instance name";
let channel = Channel::from_static("https://spanner.googleapis.com").connect().await?;
let channel = GoogleAuthz::new(channel).await;
let mut client = DatabaseAdminClient::new(channel);
let response = client
.list_databases(Request::new(ListDatabasesRequest {
parent: format!("projects/{}/instances/{}", project, instance),
page_size: 100,
..Default::default()
}))
.await?;
println!("response = {:#?}", response);
Ok(())
}
Licensed under either of Apache License, Version 2.0 or MIT license at your option.