[Rust 基礎課程]猜數字游戲-獲取用戶輸入并打印

創建項目

按照之前的章節講的創建一個 Cargo 項目的方法,自己創建一個名為 guessing_game 的 cargo 項目并執行,確保能成功打印出 Hello World。

編寫代碼

使用 RustRover 打開項目,打開 src/main.rs 文件,我們將在這個文件中編寫我們的代碼。

將以下內容敲入 main.rs 文件中(對照著敲一遍,不要復制粘貼,熟悉敲代碼的感覺):

use std::io;fn main() {println!("Guess the number!");println!("Please input your guess.");let mut guess = String::new();io::stdin().read_line(&mut guess).expect("Failed to read line");println!("You guessed: {}", guess);
}

use std::io;這行代碼導入標準庫中的 io 模塊,用于處理輸入/輸出操作。

fn main() { 這行代碼定義了主函數,它是 Rust 程序的入口點。

println!("Guess the number!"); 這行代碼打印字符串到控制臺,提示用戶猜數字。

println!("Please input your guess."); 這行代碼再次打印字符串,提示用戶輸入猜測。

letmut guess = String::new(); 聲明一個可變(mut)變量guess,并初始化為一個空的String類型實例。String是 Rust 中可增長的、UTF-8 編碼的字符串類型。

io::stdin() 這行代碼調用 io模塊的stdin()函數,返回一個Stdin類型實例,代表標準輸入(通常是鍵盤)。

.read_line(&mut guess) 這行代碼調用Stdin實例的read_line()方法。它讀取用戶輸入的一行文本,并將其追加到guess變量中。&mut guess表示將guess的可變引用傳遞給read_line,這樣read_line就可以修改guess的內容。

.expect("Failed to read line");這行代碼是處理異常, read_line方法返回一個Result類型。expect()方法用于處理這個Result。 如果ResultOk(表示成功),expect()會解包并返回內部的值。 如果ResultErr(表示失敗),expect()會使程序崩潰,并打印括號中的錯誤消息。 在這里,如果讀取輸入失敗,程序就會帶著“Failed to read line”消息終止。

println!("You guessed: {}", guess); 這行代碼是將用戶輸入的猜測數字打印出來,{}是占位符,會被guess變量的值替換。 println!是一個宏,用于格式化輸出。

運行

之前講過,使用如下命令運行項目:

cargo run

當打印出"Please input your guess." 時,你輸入一個數字,然后,就會打印出你輸入的數字是什么。

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

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

相關文章

重讀《人件》Peopleware -(22)Ⅲ 適當人選 Ⅵ 樂在其中(上)

本章以一個小測驗開始:問題1:在過去幾年里,你們組織的年員工流失率是多少? 問題2:替換一個離職員工平均需要多少成本?評分標準如下:如果你對這兩個問題有任何答案,則通過&#xff1b…

Go、Node.js、Python、PHP、Java五種語言的直播推流RTMP協議技術實施方案和思路-優雅草卓伊凡

Go、Node.js、Python、PHP、Java五種語言的直播推流RTMP協議技術實施方案和思路-優雅草卓伊凡既然我們甲方要做直播私有化,既然我們做了這么多年系統,我們對直播的理解很深,那么我們2025年就應該用更先進的技術棧,不然怎么讓我們的…

SpringBoot 集成Mybatis Plus

一、為什么SpringBoot不推薦使用MybatisSpring Boot 不推薦使用 MyBatis,主要源于二者在設計理念、生態融合和開發風格上的差異。Spring Boot 強調“約定優于配置”,追求高效的開發體驗和統一的框架風格。它通過自動配置和依賴注入,將復雜的基…

PI 思維升級 PI設計的典范轉移:從阻抗思維到諧振控制

們先來回想一件事,根據歐姆定律,阻抗是不是越低越好? 代表即使有很大的瞬時電流,瞬間的電壓降也不會超過某個極限!理論上是! 可是這其實忽略了兩個關鍵的要素:PDN阻抗有諧振:諧振代表…

如何制定企業級服務器安全策略(Security Policy)

制定一套**企業級服務器安全策略(Security Policy)**對于保護服務器資源、數據安全和業務連續性至關重要。以下是制定安全策略的詳細指南,包括安全策略的核心要素、實施步驟和具體措施,幫助企業構建全面的服務器安全防護體系。1. …

n1 armbian docker compose 部署aipan mysql

apt update apt install docker-compose-plugin -y #安裝docker compose docker compose version Docker Compose version v2.38.2 sudo mkdir -p /sda1/data/mysql/conf.d sudo chown -R 999:999 /sda1/data/mysql # MySQL 用戶 UID 通常為 999 cat docker-compose.yml vers…

RAG情境化分段向量模型voyage-context-3,聚焦分段細節,融入全局文檔上下文

最近看到一個有意思的工作,原文來自: https://blog.voyageai.com/2025/07/23/voyage-context-3/?utm_sourceTWITTER&utm_mediumORGANIC_SOCIAL voyage-context-3:聚焦分段細節,融入全局文檔上下文 概要: Voyage A…

計算機體系結構中的中斷服務程序ISR是什么?

計算機體系結構中的中斷服務程序ISR是什么? 在計算機體系結構中,中斷服務程序(Interrupt Service Routine, ISR) 是操作系統或硬件直接調用的關鍵代碼模塊,用于響應來自硬件設備、軟件異常或系統事件的中斷信號。其核心…

開源項目XBuilder前端框架

spx-gui/ 配置文件package.json 項目依賴和腳本配置vite.config.ts Vite構建工具配置tsconfig.json TS項目配置主文件tsconfig.app.json 應用程序的TS配置tsconfig.node.json Node.js環境的TS配置index.html 應用入口HTML文件src/ 源碼目錄main.ts 應用入口文件,初始…

0723 單項鏈表

Part 1.完成單向鏈表,并完成下面功能1.單鏈表節點創建鏈表是物理空間上不連續的一個結構,需要創建一個next作為指向下一個節點的指針,所以需要建立一個結構體包含數據域,next指針域,記錄長度的數據域。因為長度只有頭節…

基于 ASP.NET Web 應用程序(.NET Framework)的花店系統

1.1功能模塊實現1.1.1整體結構界面由兩部分組成:左側導航欄、右側內容展示區。使用了 Bootstrap 5 的樣式庫,并結合了 ASP.NET MVC 的 Html.ActionLink 和 Razor 條件判斷語句來動態生成菜單項。1.1.2導航欄功能模塊導航欄基礎結構導航欄基礎結構使用 Bo…

C++ Qt6 CMake qml文件啟動方式說明

在Qt6之后,Qt程序默認使用CMake進行構建,當然也可以使用qmake, 本篇博客介紹Qt6.8之前和Qt6.8版本中QtQuick程序的啟動方式。 在QtQuick程序main.cpp里qml的文件啟動分為兩種:(1)直接加載qml文件,(2)加載qml模塊,下面分別介紹這兩種啟動方式。 方式1:直接啟動qml文…

字符串 “asdasjkfkasgfgshaahsfaf” 經過哈夫曼編碼之后存儲比特數是多少?

要計算字符串 “asdasjkfkasgfgshaahsfaf” 經過哈夫曼編碼后的存儲比特數,需按以下步驟進行:步驟 1:統計字符出現頻率先統計字符串中每個字符的出現次數:a:出現 6 次s:出現 6 次d:出現 1 次j&a…

什么是游戲盾(高防版)?

隨著網絡游戲產業的快速發展,游戲服務器的安全問題日益受到關注。DDoS攻擊、CC攻擊等網絡威脅常常導致游戲卡頓、斷線甚至服務器宕機,嚴重影響玩家體驗。游戲盾(高防版)是一種專為游戲業務設計的網絡安全防護服務,集成…

openGauss數據庫在CentOS 7 中的單機部署與配置

部署 版本選擇 通過openGuass官網下載地址 ,我們可以看到它支持x86_64與Aarch64兩種平臺,又分成openEuler 22、openEuler 20、Centos 7以及Docker 版本。 進入CentOS 7標簽,看到又分成企業版、輕量版、極簡版與分布式鏡像版。 本文只討論…

HTTP響應狀態碼詳解

HTTP 響應狀態碼(HTTP Status Code)是服務器在響應客戶端請求時返回的 3 位數字代碼,用于表示請求的處理狀態。以下是常見的 HTTP 狀態碼及其含義: 1xx(信息性狀態碼) 表示請求已被接收,需要繼…

Pytorch中register_buffer和torch.nn.Parameter的異同

說下register_buffer和Parameter的異同 相同點方面描述追蹤都會被加入 state_dict(模型保存時會保存下來)。與 Module 的綁定都會隨著模型移動到 cuda / cpu / float() 等而自動遷移。都是 nn.Module 的一部分都可以通過模塊屬性訪問,如 self…

吉吉巳資源整站源碼完整打包,適用于搭建資源聚合/整合類站點,全網獨家,拿來就用

想要搭建一個資源整合站點,如影視聚合類站點、資訊聚合類站點、圖集聚合類站點等,需要花費大量的時間來查找合適的系統或源碼。然后要去測試,修復bug,一直到能夠正常的運營使用,花費的時間絕對不短,今天分享…

嵌入式學習的第三十五天-進程間通信-HTTP

TCP/IP協議模型:應用層:HTTP;傳輸層:TCP UDP;網絡層:IPv4 IPv6網絡接口層一、HTTP協議1. 萬維網WWW(World Wide Web) 世界范圍內的,聯機式的信息儲藏所。 萬維網解決了獲取互聯網上的數據時需要解決的以下問題&#x…

es 和 lucene 的區別

1. Lucene 是“發動機”,ES 是“整車”Lucene:只是一個 Java 庫,提供倒排索引、分詞、打分等底層能力。你必須自己寫代碼處理索引創建、更新、刪除、分片、分布式、故障恢復、API 封裝等所有邏輯。Elasticsearch:基于 Lucene 的分…