【Rust日报】2020-05-18 Castor, WASM, Rust嵌套循环

Castor: 微型互联网浏览器 (Gemini, Gopher, Finger)

Castor: A Browser for the small internet (Gemini, Gopher, Finger)
https://sr.ht/~julienxx/Castor/
Caster
这是一个用Rust调用GTK库编写的纯文本互联网协议集的图形客户端,目前支持的简单互联网协议包括:Gemini, Gopher和Finger.
安装(Installation)
Castor须要最新的>=1.39以上的Rust语言版本,若是你的系统没有最新版本的Rust,请用 Rustup 安装。
依赖库:
  • openssl
  • gtk+3
  • gdk-pixbuf
  • pango
  • atk
  • cairo
编译和安装:
  • 运行 make 就能够编译Castor
  • 安装: sudo make install
  • 运行Castorr而后输入 gemini://gemini.circumlunar.space 就能够开始在网上冲浪了!~
在Linux环境编译:
  • apt install build-essential rustc cargo libgtk-3-dev libgdk-pixbuf2.0-dev libssl-dev
  • make & make install
MacOS环境下编译:详见( 步骤
Windows环境下编译:详见( 步骤
修改设置:
编辑 ~/.config/castor/settings.toml 设置文件,支持用12进制,纯颜色甚至emojis!
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
[general]start_url = "gemini://gemini.circumlunar.space/capcom"
[colors]h1 = "red"h2 = "#FF6347"h3 = "green"list = "#C71585"text = "#FF1493"background = "#FFC0CB"
[characters]h1 = ">"h2 = "))"h3 = "}}}"list = "🌼"
[monospace]gemini=falsegopher=truefinger=true

抽象化了的WebAssembly便是平台

WebAssembly as a Platform for Abstraction
https://users.rust-lang.org/t/wasm-as-a-platform-for-abstraction/35736
http://adventures.michaelfbryan.com/posts/wasm-as-a-platform-for-abstraction/?utm_source=users-forum&utm_medium=social&utm_campaign=wasm-platform-for-abstraction
最近玩嵌入式WASM,应用系统须要在runtime加载任意语言写成的可执行/二进制代码,在提供沙盒式的运行时环境的同时, 可让用户提供定制的跟编程环境分离的runtime. 这就是著名的 WebAssembly as a Platform for Abstraction .

Rust的循环; 从嵌套循环中中断退出

Loops in Rust; Breaking From Nested Loops
https://qvault.io/2020/05/14/loops-in-rust-breaking-from-nested-loops/
Rust语言的循环和标准的C语言方式是不同的。语法不同,并且有一些强有力的循环选项 是的Rust语言的循环用起来很是简单。首先咱们学习一些最基本的循环,而后咱们再学习一下 若是在嵌套循环里中断退出和继续执行。
标准的For循环:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
fn main() { for x in 0..10 { println!("{}", x); }}
这个循环打印:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
0123456789
0..10的 iterator 在循环语法中包含了下限可是不包含上限。更通用的语法:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
for var in iterator { // do stuff}
我我的认为,全部的编程语言都应该采用iterators单一语法来实现循环。这样的简单明了的方式使得Rust语言通俗易懂,这样就能够经过定制iterator 来让循环变得更增强大,甚至能够达到Go语言的复杂格式的循环:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
for i := 0; i < 10; i++ { fmt.Println(i)}
Rust语言的循环没有说明iteration(i++)的每个指针步增时候的状况, 也没有说明如何在(i<10)前若是步进到下一步,仅仅是让iterator走完。
循环继续和中断:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
for x in 0..10 { if x > 5 && x < 7 { continue } println!("{}", x);}
关键词 continue 都是跟全部语言同样,在这个例子中当 x>5 而且 x<7 的时候在循环中 continue 到下一个iteration中而不打印,这样结果是:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
012345789
中断循环也是相似:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
for x in 0..10 { if x > 5{ break } println!("{}", x);}打印结果:
012345
嵌套循环:
在不少编程语言,嵌套循环都很是诡异,好比,咱们如何在一个嵌套循环中让外循环继续的条件创建在内循环里呢?让咱们看看下面的例子:
  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   

  
    
  
  
  
   
   
            
   
   
'outer: for x in 0..5 { for y in 0..5 { if y > 2{ break 'outer } println!("x: {}, y: {}", x, y); }}打印:
x: 0, y: 0x: 0, y: 1x: 0, y: 2
利用``outer`标签使得直接控制从哪一个循环中断出来很是清晰。缺省的中断就是直接从内循环中断出来,利用标签的方式,也能够用来实现循环继续。


--
javascript

From 日报小组 BobQinjava

社区学习交流平台订阅:
  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区

本文分享自微信公众号 - Rust语言中文社区(rust-china)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。编程

相关文章
相关标签/搜索