คำถามติดแท็ก rust

Rust เป็นภาษาการเขียนโปรแกรมระบบโดยไม่ต้องมีตัวรวบรวมขยะโดยมุ่งเน้นที่เป้าหมายสามประการ ได้แก่ ความปลอดภัยความเร็วและการทำงานพร้อมกัน ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัสที่เขียนใน Rust ใช้แท็กเฉพาะของรุ่นสำหรับคำถามที่อ้างถึงรหัสที่ต้องใช้กับรุ่นใดรุ่นหนึ่งเช่น [rust-2018] ใช้แท็กเฉพาะเจาะจงมากขึ้นสำหรับหัวข้อย่อยเช่น [การเกิดสนิมสินค้า] และ [การเกิดสนิมมาโคร]

8
อะไรคือความแตกต่างระหว่าง "String" และ "str" ​​ของ Rust
ทำไมสนิมถึงมีStringและstr? อะไรคือความแตกต่างระหว่างStringและstr? เมื่อไหร่จะใช้Stringแทนstrและในทางกลับกัน? เป็นหนึ่งในพวกเขาได้รับการคัดค้าน?
418 string  rust 

1
ทำไมคอมไพเลอร์ Rust ไม่ปรับโค้ดให้เหมาะสมโดยสมมติว่าการอ้างอิงที่ไม่แน่นอนทั้งสองไม่สามารถใช้นามแฝงได้
เท่าที่ฉันรู้การอ้างอิงนามแฝงตัวชี้ / สามารถขัดขวางความสามารถของคอมไพเลอร์ในการสร้างรหัสที่ดีที่สุดเพราะพวกเขาจะต้องตรวจสอบให้แน่ใจว่าการสร้างไบนารีทำงานอย่างถูกต้องในกรณีที่ทั้งสองอ้างอิง / พอยน์เตอร์นามแฝงแน่นอน ตัวอย่างเช่นในรหัส C ต่อไปนี้ void adds(int *a, int *b) { *a += *b; *a += *b; } เมื่อคอมไพล์clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)ด้วย-O3แฟล็ก 0000000000000000 <adds>: 0: 8b 07 mov (%rdi),%eax 2: 03 06 add (%rsi),%eax 4: 89 07 mov %eax,(%rdi) # The first time 6: 03 06 add …

4
ทำไมไม่พิมพ์! ทำงานในการทดสอบหน่วยสนิมหรือไม่
ฉันใช้วิธีและการทดสอบหน่วยต่อไปนี้แล้ว: use std::fs::File; use std::path::Path; use std::io::prelude::*; fn read_file(path: &Path) { let mut file = File::open(path).unwrap(); let mut contents = String::new(); file.read_to_string(&mut contents).unwrap(); println!("{}", contents); } #[test] fn test_read_file() { let path = &Path::new("/etc/hosts"); println!("{:?}", path); read_file(path); } ฉันรันการทดสอบหน่วยด้วยวิธีนี้: rustc --test app.rs; ./app ฉันยังสามารถเรียกใช้ด้วย cargo test ฉันได้รับข้อความแจ้งว่าผ่านการทดสอบ แต่println!ไม่ปรากฏบนหน้าจอ ทำไมจะไม่ล่ะ?
285 rust  println 

10
ฉันจะพิมพ์ประเภทของตัวแปรใน Rust ได้อย่างไร
ฉันมีดังต่อไปนี้: let mut my_number = 32.90; ฉันจะพิมพ์ประเภทของได้my_numberอย่างไร การใช้typeและtype_ofไม่ทำงาน มีวิธีอื่นที่ฉันสามารถพิมพ์ชนิดของตัวเลขได้หรือไม่
238 types  rust 

2
เหตุใดจึงมีผลกระทบอย่างมากเมื่อวนลูปมากกว่าอาร์เรย์ที่มี 240 องค์ประกอบขึ้นไป
เมื่อเรียกใช้ลูปผลรวมเหนืออาร์เรย์ใน Rust ฉันสังเกตเห็นว่าประสิทธิภาพลดลงอย่างมากเมื่อCAPACITY> = 240. CAPACITY= 239 เร็วกว่าประมาณ 80 เท่า มีการเพิ่มประสิทธิภาพการรวบรวมพิเศษสนิมกำลังทำสำหรับอาร์เรย์ "สั้น"? rustc -C opt-level=3รวบรวมกับ use std::time::Instant; const CAPACITY: usize = 240; const IN_LOOPS: usize = 500000; fn main() { let mut arr = [0; CAPACITY]; for i in 0..CAPACITY { arr[i] = i; } let mut sum = 0; …

4
จะปิดการใช้งานคำเตือนรหัสที่ไม่ได้ใช้ใน Rust ได้อย่างไร
struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` --> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default ฉันจะกลับคำเตือนเหล่านี้อีกครั้งเพื่ออะไรที่ร้ายแรง แต่ฉันแค่ซ่อมมันด้วยภาษาและนี่ทำให้ฉันรู้สึกแย่ ฉันพยายามเพิ่ม#[allow(dead_code)]รหัสของฉัน แต่มันไม่ได้ผล

2
เหตุใดฉันไม่สามารถเก็บค่าและการอ้างอิงถึงค่านั้นในโครงสร้างเดียวกันได้
ฉันมีค่าและฉันต้องการเก็บค่านั้นและการอ้างอิงถึงสิ่งที่อยู่ภายในค่านั้นในประเภทของฉันเอง: struct Thing { count: u32, } struct Combined<'a>(Thing, &'a u32); fn make_combined<'a>() -> Combined<'a> { let thing = Thing { count: 42 }; Combined(thing, &thing.count) } บางครั้งฉันมีค่าและฉันต้องการเก็บค่านั้นและการอ้างอิงถึงค่านั้นในโครงสร้างเดียวกัน: struct Combined<'a>(Thing, &'a Thing); fn make_combined<'a>() -> Combined<'a> { let thing = Thing::new(); Combined(thing, &thing) } บางครั้งฉันไม่ได้อ้างอิงค่าและได้รับข้อผิดพลาดเดียวกัน: struct Combined<'a>(Parent, Child<'a>); fn make_combined<'a>() …

5
จะจับคู่สตริงกับตัวอักษรสตริงใน Rust ได้อย่างไร
ฉันพยายามที่จะหาวิธีจับคู่Stringในสนิม ตอนแรกฉันพยายามจับคู่แบบนี้ แต่ฉันคิดว่า Rust ไม่สามารถส่งผ่านstd::string::Stringไปโดยปริยาย&strได้ fn main() { let stringthing = String::from("c"); match stringthing { "a" => println!("0"), "b" => println!("1"), "c" => println!("2"), } } มีข้อผิดพลาด: error[E0308]: mismatched types --> src/main.rs:4:9 | 4 | "a" => println!("0"), | ^^^ expected struct `std::string::String`, found reference | = note: expected type …
205 string  match  rust 


10
เหตุใดจึงต้องมีการกำหนดอายุการใช้งานที่ชัดเจนใน Rust
ฉันกำลังอ่านบทในช่วงชีวิตของหนังสือ Rust และฉันเจอตัวอย่างนี้สำหรับอายุการใช้งานที่ตั้งชื่อ / ชัดเจน: struct Foo<'a> { x: &'a i32, } fn main() { let x; // -+ x goes into scope // | { // | let y = &5; // ---+ y goes into scope let f = Foo { x: y }; // ---+ f goes …

4
แพคเกจสนิมที่มีทั้งไลบรารีและไบนารีหรือไม่
ฉันต้องการสร้างแพคเกจ Rust ที่มีทั้งไลบรารีที่สามารถใช้ซ้ำได้ สมมติว่าฉันไม่ได้สับสนความหมายใด ๆ ในระบบโมดูลสนิมCargo.tomlไฟล์ของฉันควรมีลักษณะอย่างไร
190 rust  rust-cargo 

7
แปลง String เป็น int ใน Rust หรือไม่?
หมายเหตุ: คำถามนี้มีรหัส pre-1.0 ที่เลิกใช้แล้ว! แม้ว่าคำตอบนั้นถูกต้องแล้ว หากต้องการแปลง a strเป็นintin in Rust ฉันทำได้ดังนี้: let my_int = from_str::<int>(my_str); วิธีเดียวที่ฉันรู้วิธีที่จะแปลงStringไปสู่การintที่จะได้รับส่วนแบ่งของมันแล้วใช้from_strมันเพื่อต้องการ: let my_int = from_str::<int>(my_string.as_slice()); มีวิธีการแปลงโดยตรงที่Stringไปยังint?
187 rust 

2
กฎการลงทะเบียนอัตโนมัติที่ถูกต้องของ Rust คืออะไร
ฉันเรียนรู้ / ทดลองกับสนิมและในความสง่างามทั้งหมดที่ฉันพบในภาษานี้มีลักษณะเฉพาะอย่างหนึ่งที่ทำให้ฉันงงงัน ตัวชี้การเกิดสนิมโดยอัตโนมัติเมื่อทำการเรียกเมธอด ฉันทำแบบทดสอบเพื่อกำหนดพฤติกรรมที่แน่นอน: struct X { val: i32 } impl std::ops::Deref for X { type Target = i32; fn deref(&self) -> &i32 { &self.val } } trait M { fn m(self); } impl M for i32 { fn m(self) { println!("i32::m()"); } } impl M for X { …

4
ความแตกต่างระหว่าง iter และ Into_iter คืออะไร
ฉันกำลังกวดวิชาRust by Exampleซึ่งมีข้อมูลโค้ดนี้: // Vec example let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; // `iter()` for vecs yields `&i32`. Destructure to `i32`. println!("2 in vec1: {}", vec1.iter() .any(|&x| x == 2)); // `into_iter()` for vecs yields `i32`. No destructuring required. println!("2 in vec2: {}", vec2.into_iter().any(| …
175 rust 

3
อะไรคือความแตกต่างระหว่างลักษณะใน Rust และ typeclasses ใน Haskell
ลักษณะใน Rust ดูเหมือนอย่างน้อยที่สุดก็คล้ายกับtypeclassesใน Haskell แต่ฉันเคยเห็นคนเขียนว่ามีความแตกต่างระหว่างพวกเขา ฉันสงสัยว่าความแตกต่างเหล่านี้คืออะไร
157 haskell  rust  traits 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.