Rust v1.39发布 - 这个编程语言真不一般! (3)

Rust学习曲线略为陡峭,突破新手期所需时间数倍于Golang/Python,如果有着C++和Haskell经验对这一阶段帮助很大。突破新手期后就一片坦途,不再像编写C/C++程序那样谨小慎微,而async/await关键字的引入大大方便了异步编程,很多时候感觉都在用C#/Java这样的高层语言编程一样--关注于业务和程序结构而不用去担心某个对象错误地释放。

需要吐槽的是各自为战的生态系统,为了熟练使用async/await关键字,关于future就需要知晓std::future::Future 和futures::future::Future, 而后者还分为0.1版本和0.3版本。又由于不同的库依赖于不同的future实现,所以还需要精通它们之间各种转换,开始时真有点头大╮(﹀_﹀)╭。

瑕不掩瑜。Rust可以说是目前最全面的编程语言。它既可以用于开发与硬件打交道的底层,也能用来开发对性能有极致要求的微服务,甚至还可以开发运行在浏览器中的WebAssembly网站。在拥有极致性能的同时又不失鲁棒性和安全性。编程风格自由且高效,能够被广泛的其它语言开发者(C++/Haskell/Python/Scala等)接纳。这些优势决定了Rust将会大放异彩!

最后来一段使用Seed开发的WebAssembly浏览器页面代码展示:

fn view(model: &Model) -> impl View<Msg> { let plural = if model.count == 1 {""} else {"s"}; // Attrs, Style, Events, and children may be defined separately. let outer_style = style!{ St::Display => "flex"; St::FlexDirection => "column"; St::TextAlign => "center" }; div![ outer_style, h1![ "The Grand Total" ], div![ style!{ // Example of conditional logic in a style. St::Color => if model.count > 4 {"purple"} else {"gray"}; St::Border => "2px solid #004422"; St::Padding => unit!(20, px); }, // We can use normal Rust code and comments in the view. h3![ format!("{} {}{} so far", model.count, model.what_we_count, plural) ], button![ simple_ev(Ev::Click, Msg::Increment), "+" ], button![ simple_ev(Ev::Click, Msg::Decrement), "-" ], // Optionally-displaying an element if model.count >= 10 { h2![ style!{St::Padding => px(50)}, "Nice!" ] } else { empty![] } ], success_level(model.count), // Incorporating a separate component h3![ "What are we counting?" ], input![ attrs!{At::Value => model.what_we_count}, input_ev(Ev::Input, Msg::ChangeWWC) ] ] } #[wasm_bindgen(start)] pub fn render() { seed::App::build(|_, _| Init::new(Model::default()), update, view) .build_and_start(); }

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzygzs.html