การรับจำนวนเต็มเป็นอินพุตใน Rust ไม่ใช่เรื่องยาก เพียงแต่ต้องใช้บรรทัดโค้ดในการเขียนมากกว่าในภาษาอย่าง Python

ดังที่เราทราบ ขั้นตอนแรกคือการใช้โมดูล std::io เพื่อรับอินพุตมาตรฐานใน Rust

use std::io;
fn main() {
  let mut input = String::new();
  println!("Enter your query :");
  io::stdin().read_line(&mut input).expect("Failed to read input");
 }

เรารู้ว่าโค้ดด้านบนถูกใช้เพื่อจัดการกับ Strings

ตอนนี้เราต้องใช้อีกหนึ่งบรรทัด:

let num: u32 = input.trim().parse().expect("Invalid input");

trim() : มักใช้เพื่อลบช่องว่างนำหน้าและต่อท้าย (ช่องว่าง แท็บ บรรทัดใหม่ ฯลฯ)
parse() : ฟังก์ชันนี้มีความสำคัญมากเนื่องจากใช้ในการแปลงสตริงให้เป็นค่าของข้อมูลประเภทอื่น เช่น จำนวนเต็ม ทศนิยม หรือประเภทที่กำหนดเอง โดยการแยกวิเคราะห์เนื้อหาของสตริง

นี่คือรหัสเต็ม:

use std::io;

fn main() {
    let mut input = String::new();

    println!("Enter an integer:");
    io::stdin().read_line(&mut input).expect("Failed to read line");

    let num: i32 = input.trim().parse().expect("Invalid input");

    println!("You entered: {}", num);
}

หากคุณกำลังคิดว่าหากการใช้ trim() เป็นเพียงการลบช่องว่างหรือช่องว่างเพิ่มเติมใดๆ แล้วทำไมต้องใช้มันเมื่อเราป้อนข้อมูลโดยไม่มีช่องว่างเพิ่มเติม

ดังนั้น โปรดจำไว้เสมอว่า :
หากคุณลบ trim() มันจะแสดงคำสั่ง expect()function เนื่องจากเมธอด read_line() อ่านบรรทัดอินพุต รวมถึงอักขระขึ้นบรรทัดใหม่ (\n) และต่อท้าย String ที่ให้ไว้ ดังนั้น เมื่อคุณป้อน 32 และกด Enter ตัวแปร input จะมี "32\n" (รวมถึงอักขระขึ้นบรรทัดใหม่ด้วย)
เมื่อคุณพยายามแยกวิเคราะห์สตริงนี้เป็น u32 โดยใช้ a.parse() parser จะพบอักขระขึ้นบรรทัดใหม่ที่ส่วนท้ายของ ป้อนข้อมูล. การแยกวิเคราะห์หยุด ณ จุดนี้ และ parser ไม่ใช้อักขระขึ้นบรรทัดใหม่