borrow-checker

    3熱度

    1回答

    我試圖從getopts中提取一個可選參數,並且獲取借入的值對於變量s而言的活動時間不夠長。 代碼: let cfgFilePath = match matches.opt_str("c") { Some(s) => Some(Path::new(&s.clone())), None => None }; 錯誤: main.rs:29:36: 29:45 error: bo

    1熱度

    2回答

    struct Parent<'a> { inner: Option<&'a mut Object> } impl<'a> Parent<'a> { fn new() -> Parent<'a> { Parent { inner: None, } } fn bind(&mut self, obj: &'a mut Ob

    8熱度

    1回答

    從Why can't I store a value and a reference to that value in the same struct?我瞭解到,我無法在同一個結構中存儲值和引用。 提出的解決方案是: 的最簡單和最值得推薦的解決方案是不要試圖把這些物品在同一結構在一起。通過這樣做,你的結構嵌套將模仿你的代碼的生命週期。 將擁有數據的類型放置在一個結構中,然後提供允許您根據需要獲取引

    1熱度

    1回答

    當下面的代碼: extern crate tempdir; use std::env; use tempdir::*; #[test] fn it_installs_component() { let current_dir = env::current_dir().unwrap(); let home_dir = env::home_dir().unwrap();

    2熱度

    2回答

    Vec<T>有兩種方法: fn push(&mut self, value: T) fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) 他們都採取了可變參考向量。但借的範圍似乎是不同的,e.g: fn works() { let mut nums: Vec<i64> = vec![1,2,3,4];

    3熱度

    1回答

    你會如何改變一個載體的方式,你需要一個不變的引用到所述的載體來決定你需要如何改變載體?例如,我有一段代碼,看起來這樣的事情,我要複製的向量的最後一個元素: let mut vec: Vec<usize> = vec![123, 42, 10]; // Doesn't work of course: vec.push(*vec.last().unwrap()) // Works, but is

    1熱度

    2回答

    我有一大塊代碼打開文件並逐行搜索內容,然後對每個匹配行執行一些操作。我想把它分解到它自己的函數中,該函數將文件路徑提供給您匹配的行,但我無法弄清楚如何正確地將其分解。 這就是我認爲是接近的,但我得到一個編譯器錯誤: /// get matching lines from a path fn matching_lines(p: PathBuf, pattern: &Regex) -> Vec<St

    2熱度

    1回答

    我試圖用SFML和Rust編寫一個簡單的遊戲,但借用檢查程序證明是我在這次旅程中最大的敵人。 有一些SFML需要引用另一個對象的情況。在下面的代碼中,我需要對字體的引用,否則文本不會向用戶顯示任何內容。 問題是,我嘗試了一堆東西,而且參考本身永遠不夠長。很明顯,如果我在draw方法上創建Text對象,但我想避免在應用程序的主循環內創建事物。 這是我應該看看不安全操作的情況嗎?是否有符合我需求的Rc

    1熱度

    1回答

    我想在切片String s上使用切片圖案。這不起作用,因爲Rust與&str文字不匹配切片的String。我找不到如何將String s的切片轉換爲&str s的切片。 #![feature(slice_patterns)] fn main() { // A slice of strings. let x = ["foo".to_owned(), "bar".to_owne

    5熱度

    2回答

    我正在寫一個程序,該程序寫入文件並旋轉它現在正在寫入的文件。當我檢查旋轉文件時,我似乎無法更改該文件,因爲它是由我的結構借用的。即使我drop結構的實例,我似乎無法重新獲得該文件的所有權來重新命名它。 這裏是我的example: use std::fs::File; use std::io::{Write}; use std::mem::{drop}; pub struct FileStr