【Rust日報】2020-04-09 200行代碼講透Rust Futures

200行代碼講透 Rust Futures

這是一個比較長的博客,主要是用一個例子驅動的方法來解釋Rust中的Futures,探索爲何他們被設計成這樣,以及他們如何工做,此外還介紹在編程中處理併發性時的一些替代方案。
原文地址:https://cfsamson.github.io/books-futures-explained/introduction.html,同時國內的大佬 白振軒的我的博客已經作了翻譯,請看:https://stevenbai.top/rust/futures_explained_in_200_lines_of_rust/

Rust 是 k8s 的不錯選擇

前些天,咱們日報小組介紹了 Krustlet,這是 Rust 中一個基於 WebAssembly 的 Kubelet 實現。咱們選擇使用Rust的緣由有兩個:一、Rust對WebAssembly編譯提供了一些最好的支持(稍後會詳細介紹),一、咱們想證實 Rust 的優點能夠應用於 Kubernetes 生態系統。這篇文章旨在代表咱們學到了什麼以及爲何咱們認爲 Rust 是編寫 Kubernetes 重點應用程序的絕佳選擇(有時更好)【來自(DeisLabs)的博客】。
原文請看:https://deislabs.io/posts/kubernetes-a-rusty-friendship/

proc-macro-error

proc-macro-error 的目標是使過程宏中的錯誤報告變得輕鬆便捷。
使用實例速覽:
   
     
   
   
   
    
    
             
    
    
use proc_macro_error::*;use proc_macro::TokenStream;use syn::{spanned::Spanned, DeriveInput, ItemStruct, Fields, Attribute , parse_macro_input};use quote::quote;
fn process_attrs(attrs: &[Attribute]) -> Vec<Attribute> { attrs .iter() .filter_map(|attr| match process_attr(attr) { Ok(res) => Some(res), Err(msg) => { emit_error!(attr, "Invalid attribute: {}", msg); None } }) .collect()}
fn process_fields(_attrs: &Fields) -> Vec<TokenStream> { // processing fields in pretty much the same way as attributes unimplemented!()}
#[proc_macro]#[proc_macro_error]pub fn make_answer(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as ItemStruct); let attrs = process_attrs(&input.attrs);
// abort right now if some errors were encountered // at the attributes processing stage abort_if_dirty();
let fields = process_fields(&input.fields);
// no need to think about emitted errors // #[proc_macro_error] will handle them for you // // just return a TokenStream as you normally would quote!(/* stuff */).into()}
倉庫地址:https://gitlab.com/CreepySkeleton/proc-macro-error


From 日報小組 @Jancd

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

相關文章
相關標籤/搜索