Rust語言介紹和猜數字游戲的實現

文章目錄

    • Rust語言介紹和猜數字游戲的實現
      • cargo是什么
      • 使用Rust編寫猜數字

Rust語言介紹和猜數字游戲的實現

Rust語言是一種系統編程語言,核心強調安全性、并發性以及高性能,由類似于C/C++的底層控制能力,性能也非常接近,Rust有一些特性

  1. 所有權系統,這個可以自動管理內存,無需垃圾回收器,保證數據的安全
  2. 零成本抽象,高層抽象不會帶來運行時的開銷,運行時的效率會很高
  3. 線程安全,在編譯階段就能防止數據競爭的問題
  4. 強類型語言,類型轉換非常嚴格,提升代碼的可靠性
  5. cargo管理工具非常好用,簡化項目的管理和依賴管理

cargo是什么

cargo是rust的官方管理構建工具,一來可以創建項目、構建項目、運行項目,二來可以管理整個項目依賴的第三方庫,cargo基本上涵蓋了所有的第三方庫,可以在www.crate.io中查看

一些常用的方法如下

cargo new project_name # 創建rust項目
cargo build # 構建項目生成可執行文件
cargo run # 構建并允許項目
cargo add lib_name # 添加最新版本依賴
cargo remove lib_name # 刪除依賴
cargo update [lib_name] # 更新依賴 不指定的話是更新所有依賴
cargo --help 
  1. 新創建的rust項目中會包含項目配置文件,包含項目名稱、項目版本、第三方庫的信息
    1. 創建項目可以在命令后指定項目類型cargo new project_name --bin(--lib)
    2. 默認為bin
    3. 分別為二進制項目和庫項目
    4. 也就是說可以指定我寫的項目是可執行文件,必須有main.rsmain函數作為程序入口
    5. 庫項目主要是用于封裝邏輯,供其他程序調用,第三方庫也都是庫項目
  2. cargo run 可以指定debug模式或者release模式分別使用--debug--release 默認為debug
  3. 可以指定版本,例如cargo add rand@0.7
    1. 也可以直接在配置文件中添加rand = "0.7"

使用Rust編寫猜數字

這里我們先不具體介紹規則,只是大概了解一下

  1. Rust的庫管理是通過Crate(包)進行管理的,主要分為第三方庫和本地庫
  2. 在Rust中是區分函數和宏的,使用宏時需要加!
  3. fn 表示函數
  4. 1..101是表示范圍的形式,等價于1 <= num && num < 101
    1. 如果是閉區間則是1..=100
  5. loop表示死循環,等價于while(true)
  6. 在使用模塊時需要指定,類似于C++的作用域
  7. 聲明變量時使用let
    1. 可以不指定類型,例如let rand_num會自動補全類型
    2. 有時需要指定類型,例如let guess: u32 = 或者let mut guess: String =
    3. 雖然可以不指定類型,但是Rust是一個強類型的語言
    4. mut指的是一個變量是否可以改變,類似于C++中的const但是是相反的作用
    5. 也就是說Rust的變量默認是不可被重新賦值的,只有被設定為mut才可以
  8. match 表示的是模式匹配,可以理解為一個高級的switch語句
    1. 基本語法是 match value {} (value是要匹配的值)
    2. 然后其中的每一項表示對應的返回值或者語句
    3. 可以使用{}來寫多個語句
    4. _表示default
  9. Rust在可能失敗的方法中會返回一個Result類型,主要是用于錯誤處理
    1. 需要在返回值中使用.expect("")進行處理
    2. 或者使用match分別對成功和失敗進行處理
use rand::Rng; // 引入第三方庫
use std::{cmp::Ordering, io}; // 主函數
fn main() { println!("Guess Num");let rand_num = rand::rng().random_range(1..101); // 生成一個1到100的隨機數println!("random num is {}", rand_num);loop {println!("Please Input Your Guess:");let mut guess: String = String::new();io::stdin().read_line(&mut guess).expect("Failed to read line");let guess: u32 = match guess.trim().parse() {Ok(num) => num,Err(_) => {println!("Place input a NUM!");continue;}};println!("You Guessed {}", guess);match guess.cmp(&rand_num) {Ordering::Less => println!("Too Small"),Ordering::Greater => println!("Too Big"),Ordering::Equal => {println!("You Win!");break;}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72687.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72687.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72687.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu下Docker部署Misskey:打造你的去中心化社交平臺

引言 在信息爆炸的時代&#xff0c;人們對于社交平臺的需求日益增長&#xff0c;同時也更加注重數據的隱私和自由。Misskey作為一個開源的去中心化社交平臺&#xff0c;為用戶提供了一個全新的選擇。本文將詳細介紹如何在Ubuntu Linux環境下&#xff0c;利用Docker快速部署Mis…

DeepSeek Chat 自動化交互技術分析

本文將對 DeepSeek Chat 自動化交互腳本進行技術分析&#xff0c;包括代碼結構、實現原理以及關鍵技術點。該腳本使用 Selenium 實現了對 DeepSeek Chat 平臺的自動化登錄和問答功能。 1. 代碼結構概覽 該腳本主要由以下幾個部分組成&#xff1a; 環境準備與依賴導入&#x…

128. Longest Consecutive Sequence

如果n-1存在于數組中&#xff0c;則以n開頭的連續序列可以忽略掉&#xff0c;因為以n-1開頭的連續序列的長度肯定至少比以n開頭的連續序列長1個元素。這是本題的關鍵。然后利用哈希表查詢元素是否在數組中。 class Solution { public:int longestConsecutive(vector<int>…

《SQL編程思想》中的 MySQL 建表語句和測試數據

《SQL編程思想》中的 MySQL 建表語句 建表語句 -- 創建 4 個示例表和索引 CREATE TABLE department( dept_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 部門編號&#xff0c;自增主鍵, dept_name VARCHAR(50) NOT NULL COMMENT 部門名稱) ENGINEInnoDB COMM…

基于ssm學科競賽小程序的設計及實現(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著信息時代的來臨&#xff0c;過去的學科競賽管理方式的缺點逐漸暴露&#xff0c;本次對過去的學科競賽管理方式的缺點進行分析&#xff0c;采取計算機方式構建學科競賽小程序。本文通過閱讀相關文獻&#xff0c;研究國內外相關技術&#xff0c;提出了一種關于競賽信息…

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事務&#xff0c;有四個比較核心的特性&#xff1a; 原子性一致性持久性>持久化&#xff08;說的一回事&#xff09; 把數據存儲在硬盤上>持久把數據存在內存上>不持久重啟進程/重啟主機之后&#xff0c;數據是否還存在 隔離性 Redis 是一個內存…

Python 鼠標軌跡算法 - 防止游戲檢測

一.簡介 鼠標軌跡算法是一種模擬人類鼠標操作的程序&#xff0c;它能夠模擬出自然而真實的鼠標移動路徑。 鼠標軌跡算法的底層實現采用C/C語言&#xff0c;原因在于C/C提供了高性能的執行能力和直接訪問操作系統底層資源的能力。 鼠標軌跡算法具有以下優勢&#xff1a; 模擬…

游戲立項時期隨筆記錄(1)

模擬經營的項目還沒有完全結束&#xff0c;這幾天又有可能涉及到一個新項目。感想隨筆記錄一下&#xff0c;防止忘記。今天一天整理這個&#xff0c;搞得今天沒時間看數學和AI。 在 Unity3D 游戲前端主程序的立項時期&#xff0c;核心目標是明確技術方向、評估可行性、搭建基礎…

Channel-wise Knowledge Distillation for Dense Prediction論文閱讀和

paper&#xff1a;https://arxiv.org/pdf/2011.13256.pdf code&#xff1a;https://github.com/open-mmlab/mmrazor 這篇paper主要是商湯開源的mmrazor中提及在detection有效果&#xff0c;我之前記錄的幾篇sota文章雖然在各自的paper中在detection領域都有提及有增益&#…

hide函數的使用方法

在編程中&#xff0c;我們常常需要控制元素的顯示與隱藏。特別是在前端開發中&#xff0c;hide 函數是一個非常常見的操作&#xff0c;尤其是在 JavaScript 和 jQuery 中。它可以讓你輕松地將元素從視圖中隱藏&#xff0c;進而提升用戶交互體驗和頁面的響應能力。本文將介紹如何…

【MySQL】基本操作 —— DML 與約束

目錄 DML 基本介紹DML 常見操作添加數據 insert給指定字段添加數據給全部字段添加數據給指定字段批量添加數據給全部字段批量添加數據 修改數據 update刪除數據 delete 約束基本概念約束操作主鍵約束添加單列主鍵添加多列主鍵&#xff08;聯合主鍵&#xff09;修改表結構添加主…

nginx配置轉發到另一個網站或另一臺服務器的服務

需求背景 在一臺服務器上安裝了一個服務&#xff0c;不想使用ip:port方式&#xff0c;想使用域名打開這個服務的地址。 1. 配置轉發 1.1 參數解釋 listen&#xff1a;指定 Nginx 監聽的端口。在上面的例子中&#xff0c;Nginx 監聽 8888 端口。server_name&#xff1a;用于…

HarmonyOS三層架構實戰

目錄&#xff1a; 1、三層架構項目結構1.0、三層架構簡介1.1、 common層&#xff08;主要放一些公共的資源等&#xff09;1.2、 features層&#xff08;主要模塊定義的組件以及圖片等靜態資源&#xff09;1.3、 products層&#xff08;主要放主頁面層和一些主要的資源&#xff…

macOS homebrew - 切換源

https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 環境變量中 添加&#xff1a; export HOMEBREW_BREW_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn…

ETL中的實用功能以及數據集成方式

在企業數字化轉型的進程中&#xff0c;數據集成扮演著至關重要的角色。它不僅是實現信息流動和系統協同的關鍵步驟&#xff0c;更是提升企業運營效率和決策能力的核心驅動力。ETL&#xff08;Extract&#xff0c;Transform&#xff0c;Load&#xff09;作為數據集成的重要工具&…

基于Springboot+Typst的PDF生成方案,適用于報告打印/標簽打印/二維碼打印等

基于SpringbootTypst的PDF生成方案&#xff0c;適用于報告打印/標簽打印/二維碼打印等。 僅提供后端實現 Typst2pdf-for-report/label/QR code github 環境 JDK11linux/windows/mac 應用場景 適用于定制化的報告模板/標簽/條碼/二維碼等信息的pdf生成方案。通過瀏覽器的p…

OSG簡介

OSG OpenSceneGraph (簡稱 OSG) 是一個開源的高性能3D圖形庫。 作用 它為開發者提供了一個強大的API&#xff0c;處理和渲染復雜的3D圖形。 特點 OSG基于OpenGL構建&#xff0c;提供了對現代圖形技術的支持&#xff0c;如著色器、紋理映射、光照模型等高級特性。 跨平臺支…

簡述下npm,cnpm,yarn和pnpm的區別,以及跟在后面的-g,--save, --save-dev代表著什么

文章目錄 前言一、npm&#xff0c;cnpm&#xff0c;yarn和pnpm的基本介紹和特點1.npm (Node Package Manager)2. Yarn3. cnpm (China npm)4. pnpm 二、簡述npm和pnpm 的存儲方式和依賴數1.存儲方式2.依賴樹 三、兩者依賴樹的差異導致結果的對比四、簡單說說-g&#xff0c;--sav…

三分鐘掌握視頻剪輯 | 在 Rust 中優雅地集成 FFmpeg

前言 在當今的短視頻時代&#xff0c;高效的視頻剪輯已成為內容創作者和開發者的迫切需求。無論是裁剪視頻開頭結尾、提取高光時刻&#xff0c;還是制作 GIF、去除廣告&#xff0c;剪輯都是必不可少的一環。 然而&#xff0c;批量處理大量視頻并非易事&#xff0c;常見的挑戰…

Python 視頻爬取教程

文章目錄 前言基本原理環境準備Python安裝選擇Python開發環境安裝必要庫 示例 1&#xff1a;爬取簡單直鏈視頻示例 2&#xff1a;爬取基于 HTML5 的視頻&#xff08;以某簡單視頻網站為例&#xff09; 前言 以下是一個較為完整的 Python 視頻爬取教程&#xff0c;包含基本原理…