【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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。編程

相關文章
相關標籤/搜索