rust

    0熱度

    1回答

    我對結構有一個可變引用,我想通過傳遞一個函數來更改它的一個字段,並將結果設置爲該字段的新值。但是,我收到「無法移出借來的內容」編譯錯誤。 這是證明我的問題,一個簡約的例子: struct InnerStruct { num: usize, } struct MyStruct { inner_struct: InnerStruct, } fn do_something

    0熱度

    1回答

    我需要檢查標識符是否以下劃線開頭。這不起作用: #[macro_export] macro_rules! UNDECORED { (_$_i:ident) => {... do something if underscored}; ($_i:ident) => {... do something else}; } 錯誤在哪裏?

    1熱度

    1回答

    我試圖設置兩個線程之間的雙向通信:子線程既可以發送到父進程,也可以從父進程接收,父進程可以發送去和從孩子接收。由於這樣的事實,在鏽通道是單向的,我使用的是一組雙通道的,像這樣的組織(從我家釀線程庫代碼段): let (tx, rx) = channel(); let (tx2, rx2) = channel(); (Endpoint { sender: tx2, rece

    1熱度

    3回答

    我想讀取文件的一些原始字節,所以我查看了文檔,並將一個函數放在一起,看起來應該將字節讀入一個向量並讀取從頭開始的32位整數。 fn filetobytes(name: &'static str) -> Vec<u8> { let file = File::open(name).expect("No such file"); let filebytes: Vec<u8> = fi

    1熱度

    1回答

    我在nom中編寫了一個完全無狀態的分析器,現在我需要將它包裝在幾個有狀態的層中。 我有一個名爲alt_fn的頂級解析函數,它將爲我提供解析輸出的下一位,作爲枚舉變體,其細節可能不重要。 我有三件事情,我需要做的是涉及國家: 1)我需要的,如果存在一個不可變的HashMap比賽是一部分有條件地執行對alt_fn輸出轉換我State結構。這應該基本上像一個map!但作爲一個方法調用我的結構。事情是這樣

    -1熱度

    1回答

    我在讀The Rustonomicon,並且遇到了它的section on poisoning。一個類型中毒的書面例子是當一個「互斥體將在一個恐慌期間如果它的一個MutexGuard(它獲得鎖定時返回的東西)在一個恐慌期間被丟棄」,「(Rustonomicon,第7.2節第3段) 我很漂亮,但突然很好奇。 爲了努力尋找類型中毒的實施示範,谷歌搜索「如何毒害一種類型」產生無用的結果,從化學毒物類型列

    0熱度

    1回答

    關於這個特定的錯誤信息已經有幾個問題。我把它們全部讀了一遍,但我無法弄清楚我在這裏面對的確切問題是什麼,也不知道我該如何解決它。 我有一個struct對傳入的參數有要求,我想提供一些便捷函數來構造一個新的實例。這裏說到: use std::io::{Cursor, Read, Seek}; pub struct S<R: Read + Seek> { p: R, } impl<

    -3熱度

    1回答

    我在TimeTravel中嘗試更改date的值。評論表明我想要什麼樣的價值,但這不是我得到的。 use std::cell::Cell; #[derive(Debug, Clone)] pub struct TimeTravel { pub date: Cell<i32>, } impl TimeTravel { pub fn new() -> Self {

    1熱度

    2回答

    我剛纔瞭解到,使用泛型的結構聲明爲struct Foo<T>,並且實現聲明爲impl<T> Foo<T>。該book解釋下列方式的差異: 注意到,我們才能在類型Point<T>使用T只是impl後申報T。在impl之後聲明T爲普通類型是Rust如何知道Point中的尖括號中的類型是泛型類型而不是具體類型。 再次,我是一個新手,也沒有同樣的論點具有申報struct<T> Foo<T>(甚至可能fn<

    3熱度

    2回答

    我只是實現了一個簡單的特質,以保持一個結構屬性的歷史: fn main() { let mut weight = Weight::new(2); weight.set(3); weight.set(5); println!("Current weight: {}. History: {:?}", weight.value, weight.history);