【Rust日報】2019-10-03 rust-lang 主倉庫突破 10,0000 次 commit


rust-lang 主倉庫突破 10,0000 次 commit

截至發稿,rust-lang/rust 主倉庫爲 10,0006 次commit!!!html

k8s 的 rust 客戶端

相似於 client-go 的客戶端,能夠用 Rust 來編寫更高效的 Kubernetes 控制器!git

在過去的幾個月裏,博主使用 Rust 中編寫了不少的 kubernets 專用代碼。儘管 Kubernetes 自己是用 Go 語言編寫的,但我發現我一般能夠用 Rust 編寫更簡潔、可讀和穩定的 Kubernetes 代碼。例如,我最近在 Rust 和 Go 中編寫了功能至關的 CRD 控制器。Go 版本有 1700 多行代碼,並裝載了樣板文件和自動生成的代碼。而 Rust 版本只有127行!!!它更容易理解和調試…並且寫起來絕對更快。博文原文請看:http://technosophos.com/2019/08/07/writing-a-kubernetes-controller-in-rust.htmlgithub

GitHub 倉庫地址:https://github.com/clux/kube-rs服務器

瞭解更多請看 reddit 討論微信

Tonic: gRPC 將支持 async/await

Tonic 是一個基於 http/2 的 gRpc 實現,專一於高性能、互操做性和靈活性。Tonic 這個庫是爲了提供對異步/等待的一流支持,並做爲使用 Rust 編寫的生產系統的核心構建塊。併發

Tonic 的目標是提供更多開箱即用的工具。它已經支持許多特性,並計劃支持更多特性!如下是功能列表:異步

  • 純 rust 實現(openssl 例外)async

  • 經過 tonic-interop 測試互操做性工具

  • 雙向流性能

  • 自定義元數據

  • 功能齊全的 HTTP/2 客戶端和基於 hyper 的服務器

  • 基於 openssl 或 rustls 支持的 TLS

  • 負載平衡塔供電

  • 可靠性特性,如超時、速率限制、併發控制等

  • gRPC 攔截器

  • ... 還有更多,瞭解詳情請點擊

client 端示例:
let mut client = GreeterClient::connect("http://[::1]:50051")?;
let request = Request::new(HelloRequest {
name: "hello".into(),
});
let response = client.say_hello(request).await?;
println!("RESPONSE={:?}", response);
server 端示例
#[tonic::async_trait]
impl Greeter for MyGreeter {
async fn say_hello(&self, req: Request<HelloRequest>)
-> Result<Response<HelloReply>, Status>
{
println!("Got a request: {:?}", req);
let reply = HelloReply {
message: "Zomg, it works!".into(),
};
Ok(Response::new(reply))
}
}

micromath v0.4.0:快速、微型嵌入式的數學庫

目前支持:powfexplog10log2loglntruncfractcopysign,瞭解更多請查看:https://crates.io/crates/micromath/0.4.0

folia:處理 FoLiA XML 格式的高性能Rust庫

關鍵詞:nlpxmltext-processing

這個庫目前處於 alpha 階段,它可能已經用於讀取 FoLiA 文檔和從頭建立文檔。注意,這個庫尚未實現驗證!您必須經過運行另外一個 FoLiA 驗證器來確保您的 FoLiA 文檔是有效的,由於這個庫還不能保證生成有效的 FoLiA。

使用示例,從文件中讀取並查詢全部單詞:

extern crate folia;

use folia;

//load document from file
let doc = folia::Document::from_file(filename, folia::DocumentProperties::default()).expect("parsing folia");
//Build a query, here you can match on any attribute
let query = folia::Query::select().element(folia::Cmp::Is(folia::ElementType::Word));
//Turn the query into a specific selector
let selector = folia::Selector::from_query(&doc, &query);

//Run the selector
for word in doc.select(selector, folia::Recursion::Always) {
//print the ID and the text
println!("{}\t{}",
word.id().or(Some("No-ID")),
word.text(&folia::TextParameters::default())
);
}

瞭解更多請點擊查看


From 日報小組 @Jancd

日報訂閱地址:

獨立日報訂閱地址:

  • Telgram Channel

  • 阿里雲語雀訂閱

  • Steemit

  • GitHub

社區學習交流平臺訂閱:

  • Rust.cc論壇: 支持rss

  • Rust Force: 支持rss

  • 微信公衆號:Rust語言學習交流

本文分享自微信公衆號 - Rust語言中文社區(rust-china)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索