有没有办法在Rust中创建指向方法的函数指针?

比如说, struct Foo; impl Foo { fn bar(&self) {} fn baz(&self) {} } fn main() { let foo = Foo; let callback = foo.bar; } error[E0615]:尝试获取类型'Foo'上的方法'bar'的值` -->src/main.rs:10:24 | 10 |让回调=foo.bar; |^^^^帮助:使用括号调用方法:`bar()` 使用,F

Rust 地址范围:寿命不够长

我对这两个明显相似的项目的结果感到惊讶 fn main() { let y: &int = &31i; println!("My number is {}.",*y) } //Output My number is 31. 但是,这段代码给了我一个错误 fn main() { let y: ∫ y = &31i; println!("My number is {}.",*y) } // Output on Rust

Rust 什么';临时别名可变引用的最佳方法是什么?

我正试图根据某些条件修改两个数组中的一个(在可变借用后面)。最好的方法是为可变借阅创建一个临时别名,如下(非编译)代码所示: 有更好的解决方案吗?当然,&mut*arr将重新借用: fn modify_arrays<'a>(arr1: &'a mut [u8], arr2: &'a mut [u8]) { if arr1.len() == arr2.len() { for i in 0 .. arr1.len() { l

Rust 二叉树实现的困难

我试图在Rust中实现一个简单的二叉搜索树,但我很难解决插入节点的问题。我正在使用以下数据结构和函数 enum BinaryTree<T> { Leaf(T), Branch(T, Box<BinaryTree<T>>, Box<BinaryTree<T>>), Null, } fn createBinarySearchTree(vector: Vec<int>) -> BinaryTree&

Rust 为一个类型实现Ord很尴尬吗?

我有一个新类型,我想实现Ord: use std::cmp::{Ord, Ordering}; struct MyType(isize); impl Ord for MyType { fn cmp(&self, &other: Self) -> Ordering { let MyType(ref lhs) = *self; let MyType(ref rhs) = *other; lhs.cmp(rhs)

Rust 从字符串到*const i8的正确方式是什么?

在我正在进行的为编写a的过程中,我的目光转向了在调用具有以下签名的C函数时避免内存泄漏: cass_string_init2(const char* data, cass_size_t length); 或 我尝试了几种名义上有效的方法,并得到了正确的结果,但我还没有找到一种方法来正确管理这些数据的生命周期。下面是两种示例方法 pub fn str_to_ref(mystr:&str) -> *const i8 {unsafe{ let cstr = CString::f

Rust 在可变向量中弹出最后N个元素的惯用方法是什么?

我将Rust代码贡献给RosettaCode,以学习Rust并同时贡献给Rust社区。在可变的Vec中弹出最后n个元素的最佳惯用方法是什么 下面是我写的大致内容,但我想看看是否有更好的方法: fn main() { let mut nums: Vec<u32> = Vec::new(); nums.push(1); nums.push(2); nums.push(3); nums.push(4); nums.push(5);

Rust 无法写入内存映射文件

我试图将一个字节向量,Vec写入内存映射文件,但我不明白为什么它不写入该文件。我简化了代码,以清楚地显示如何写入内存映射文件的方法 fn main() { let v : Vec<u8> = vec![0,0,0,1,0,0,0,2]; let n = v.len(); let f = OpenOptions::new() .read(true) .write(true) .truncate(true)

如何使VS代码生成并运行Rust程序?

我一直在使用,我想知道如何构建一个包含这些命令的task.json文件货物建造,货物运行[ARGS]货物运行-发布--[ARGS] 我已经试着用ontask.json制作了一个。我一直没有收到这样的子命令错误 样本: { "version": "0.1.0", // The command is tsc. Assumes that tsc has been installed using npm install -g typescript "command": "cargo", // The

Rust 如何将借用的内容移动到关闭连接

下面的代码应该接受tcp连接,读取它们,并在挂断时关闭它们 extern crate mio; use mio::{EventLoop,Token,ReadHint}; use mio::tcp::{TcpListener, TcpStream}; use std::io::Read; const L_CLIENT: Token = Token(0); const C_CLIENT: Token = Token(1); fn sa(port:u16) -> std::net::Sock

Rust 如何在没有定义中的类型的情况下设置泛型的请求?

请原谅我的英语 我正在为Rust开发Haskell的Parsec库的一个版本。当我尝试为parsec定义类型别名时,如Swift中的定义: struct Parsec<T, S:CollectionType> { typealias Parser = (BasicState<S>)->Result<T, SimpleError<S.Index>> } struct Parsec{ typealias解析器=(BasicState)-

Rust 在Vec中嵌套生存期时,生存期参数的数目错误

我试图构建一个包含对另一个结构的向量的引用的结构,如下所示: pub struct Downstream<'a> { frequency: i32, slot: i32, connector: i32, description: String, cablemac: &'a CableMac, } pub struct Upstream<'a> { downstreams: Vec<Downstream>

Rust 当使用泛型类型时,“From”的实现如何发生冲突?

我正在尝试实现一个错误枚举,其中可能包含与我们的特征之一相关的错误,如: trait Storage { type Error; } enum MyError<S: Storage> { StorageProblem(S::Error), } () 但是,这无法编译: error[E0119]:trait`std::convert::From`对于类型`MyError`,实现冲突: -->src/lib.rs:9:1 | 9 |针对MyError的impl Fro

Rust 是否仅将功能导出到模块测试?

我使用标准方法(根据)编写单元测试: fn func() -> i32 { 0 } #[cfg(test)] mod test { use super::*; #[test] fn func_test() { let res = func(); } } 要使其编译,我必须通过pub关键字将func公开 是否可以将func设置为私有,但在内部测试模块中使用它?从Rust 1.15开始,您的代码可以正常工作 以前只有公共符号通过通配

Rust 如何使用HTML5解析页面、修改DOM并序列化它?

我想解析一个网页,在某些位置插入锚,并再次呈现修改后的DOM,以便为生成文档集。这可能吗 从html5ever中包含的示例中,我可以看到如何读取HTML文件和执行穷人的HTML输出,但我不明白如何修改检索到的RcDom对象 我希望看到一个片段将锚元素()插入到RcDom 注意:这是一个关于生锈和HTML5的问题,特别是。。。我知道如何在其他语言或更简单的HTML解析器中完成此操作。以下是一些代码,用于解析文档、向链接添加achor并打印新文档: extern crate html5ever;

在Rust中的同一TCP流上读写

我有一个TcpStream,它通过在BufReader中缓冲接收到的行来打印出来 use std::net::TcpStream; use std::io::{BufReader, BufRead, Write, BufWriter}; fn main() { let stream = TcpStream::connect("irc.freenode.org:6667").unwrap(); let mut line = String::new(); let mut r

Rust 读取一级目录结构

我试图使用Rust列出目录中的所有目录(不是递归的)。我主要遵循示例代码文档,但我试图使其更简单,因为我提前知道目录是什么,并且不需要递归 我把它归结为: for entry in read_dir(Path::new("known-directory")) { let path = entry.path(); if path.is_dir() { print!("{}", entry); } } 这不起作用,因为我收到了关于 在当前作用域中找不到类型

Rust 有没有办法从struct获取关联的类型?

此代码: use std::collections::HashMap; struct MyNode; struct MyEdge; struct Graph<N, E> { h: HashMap<N, Vec<E>>, } type MyGraph = Graph<MyNode, MyEdge>; fn main() { let x: MyGraph::N;//XXX println!("Results:")

Rust 如何在源代码之外存储格式字符串模板?

翻译时,消息可以使用不同的语言,并具有格式参数。我希望能够将模板存储在文件中: static PATTERN: &'static str = r"Hello {inner};"; /// in some implementation fn any_method(&self) -> String { format!(PATTERN, inner = "world"); } 那是不可能的。格式字符串必须是实际的文字字符串 下一个最好的方法是某种类型的库。或者,如果

Rust 锈迹斑斑

我发现: pub特性访问者{ fn访问(&mut self,t:&t); } 可访问的酒吧:大小{ fn接受(&self,t:&mut t) 哪里 T:参观者, { t、 访问(自我); } } 由于Visitable不是对象安全的,我无法存储Visitable对象的Vec。我发现,有没有可能为可访问性做一个类似的解决方案?可访问性是一个特征,特征没有大小(实现者不能保证具有相同的大小)。你需要储存一个大小合适的东西。将值包装在框中,然后按如下方式使用: trait VisitorTrait

Rust 实现泛型特征的对象向量机

我正在构建一个命令行应用程序。我有以下特点: trait ValidatedCommand { type Output; fn run() -> Result<Self::Output, std::io::Error>; } 有哪些错误 error[E0191]:必须指定关联类型“Output”(来自trait“ValidatedCommand”)的值 -->src/main.rs:33:23 | 2 |型输出; |--------------此处定义了“输

如何在Rust中的特定内存区域声明静态变量?

我有一个静态常数,我想把它放在我的MCU的一个特定内存区域,这个程序是用Rust为ARM stm32m4 MCU编写的 在我的测试用例中,我定义了如下变量: #[link_section = ".device_info"] static DEVINFO: &'static str = "This is in the correct place no?"; 在我的memory.x文件中,我指定了: 内存 { 闪存:org=0x08000000,len=15k 设备信息:org=0x080

如何修改Rust中可变引用的完整内容?

我有一个枚举类型。我创建了一个变量并给它分配了一个枚举类型的值,我希望该变量成为值“永远”的所有者。存在对该类型的可变引用的Vec。然后我想检索这些引用,并可能修改它们指向的值,以便更改原始变量。有办法做到这一点吗 #[派生(调试)] 枚举测试类型{ 第一, 第二(i32), } fn main(){ 让mut test_var=TestType::First; println!(“原始{:?}”,测试变量); 让mut test_vec:vec=vec![&mut test_var]; pri

Rust 如何指定trait函数接受实现trait的参数?

我为度量空间中的向量创建了一个抽象数据类型,但编译器会抱怨,因为它不承认作为参数的实现是这种类型的 trait MetricPoint { fn square_distance(&self, other: &MetricPoint) -> f64; } struct RNPoint { coordinates: Vec<f64>, } impl RNPoint { fn new(coordinates: &[f64]) -&g

如何在Rust中迭代和更改可变数组中的值?

这就是我取得的成绩: #[derive(Copy, Clone, Debug)] enum Suits { Hearts, Spades, Clubs, Diamonds, } #[derive(Copy, Clone, Debug)] struct Card { card_num: u8, card_suit: Suits, } fn generate_deck() { let deck: [Option<Card>; 5

Rust 不支持MSVC工具链。请使用GNU工具链

当我试图调试锈菌时,我收到了上面提到的消息 我更新了工具链设置以使用建议的默认设置: 如何解决这个问题并使CLion能够调试生锈代码 我做了一些搜索,但没有找到一个简单的答案(至少有一个我很容易理解) 任何帮助都将不胜感激。错误消息与Rust toolchain有关,如果您没有安装,则需要安装基于GNU的Rust toolchain(安装之前,请确保您为您的环境选择了有效的基于GNU的toolchain,如果您不确定,请阅读注释部分) 然后在解决这个问题的最简单方法之后,将其设置为默认工具链

Rust 仅当自我:大小时才具有超级特质

让我们假设我有一个特点 trait A { fn new() -> Self where Self : Sized; fn foo(&self) -> i32; } struct B { data : i32 } impl A for B { fn new() -> Self { B {data : 42} } fn foo(&self) -> i32 { self.data

Rust 如何删除(移出)包含大数据结构类型的结构字段?

我有一个非常大的结构: struct VeryLargeStructure { // many tens of fields here } 以及在字段中包含它的另一个结构: struct A { v: VeryLargeStructure } 如何从v字段中移动值 let a = A{/* ... */} let b = a.v; …而不必为a.v构建VeryLargeStructure的新实例,因为这样做既没有性能也没有用处 我知道mem::replace和mem::swa

Rust 将人造丝用于带有自定义结构的\u par_iter().sum()

我正在尝试使用人造丝::前奏::来总结一组结构实例。我已经为结构实现了std::iter::Sum,但仍然遇到错误。下面是我的示例代码 use std::iter::Sum; use rayon::prelude::*; pub struct TestStruct { val: f32, } impl TestStruct { pub fn new(v: f32) -> Self { Self { val: v } } } impl<'

Rust 如何将PickleDB与Rocket/Juniper上下文一起使用?

我正在尝试使用内存中的键/值存储编写一个基于//Rust的GraphQL服务器 pickle数据库在开始时创建/加载,并交给rocket管理: fn rocket() -> Rocket { let pickle_path = var_os(String::from("PICKLE_PATH")).unwrap_or(OsString::from("pickle.db")); let pickle_db_dump_policy = PickleDbDumpPolicy::P

如何解决Rust'中的E0658(下划线命名);什么是货物检查?

使用rust-s3板条箱运行cargo check时出错。 我找到的所有文档似乎都表明这是一个已解决的问题 Cargo.toml中是否缺少设置、选项或其他内容 这是检查错误: error[E0658]: naming constants with `_` is unstable --> /Users/andrevan/.cargo/registry/src/github.com-1ecc6299db9ec823/bytes-0.5.4/src/bytes.rs:911:1 |

Rust 如何计算两个chrono::DateTime之间的持续时间?

我正在使用板条箱,想计算两个DateTimes之间的Duration 使用时钟::Utc; 使用chrono::offset::TimeZone; 让周期的开始时间=Utc.ymd(2020,1,1)和hms(0,0,0); 假设周期的结束时间=Utc.ymd(2021,1,1)。和μhms(0,0,0); //我应该在这里输入什么? // //目标是找到一个持续时间,以便 //周期的开始周期+持续时间==周期的结束周期 //我希望持续时间是std::time类型 让持续时间=。。。 设nb_o

Rust 调用一个函数,该函数从映射方法返回结果

我正在学习Rust,我正在努力进行可选的URL解析,我有以下代码: 使用hyper::Uri; fn主->结果{ 让url=Somehttp://www.stackoverflow.com; let works=如果let Someurl=url{ 你的URL是什么? }否则{ 没有一个 }; 让dos_not=url.map | u | parse_urlu?; 好啊 } fn解析\u urlurl\u str:&str->Result{ 未执行!; } 文件上说打电话?可以用作简化错误处理的

Rust 使用multipeek将next()前进到peek()

我用的是Rust Itertools MultiPeek。如何有效或方便地将next()迭代器提升到peek()迭代器的当前位置 fn main() { let v = "abcd"; let mut mp = itertools::multipeek(v.char_indices()); if let Some((byte_offset, c)) = mp.peek() { println!("peek: offset {}, char {}", byt

Rust 位置独立代码(PIC)中的绝对地址

我正试图构建并链接一个映像作为操作系统内核(即QEMU)加载,目标是aarch64 unknown none softfloat。我使用一个自定义linker.ld文件,它为内核条目(\u reset)设置入口点并定位图像 =0x40080000 其中程序计数器(PC)处于复位状态 它工作正常,直到我将0x40080000处的页面映射到内核将驻留的高内存,并启用虚拟内存转换。为了确保切换后的调试信息,我将标称图像位置更改为 =0xFFFF8200000000 重建 我发现访问: 对一些(酒吧外

Rust 如何对Bevy查询进行迭代并保留对迭代值的引用,以便以后使用?

我在empty变量中有一个借用,我想延长它的寿命。在注释代码块中,我试图解决它,但引用不再可用。我必须再次循环,以找到匹配项,从而采取行动 如何在查询中循环查找最佳匹配,然后在知道它是最佳匹配后执行查询,而不必再次循环查找 use bevy::prelude::*; struct Person; struct Name(String); fn main() { App::build() .add_default_plugins() .add_start

Rust 编译位字段的联合时获取E0658

尝试在Rust中使用联合和位字段,对于位字段,我使用的是位字段板条箱,但我一直在查找联合使用的示例,但找不到任何示例,现在我遇到了一个错误 解决此错误的正确方法是为Image2D/`3D类型创建副本构造函数吗?如果是,怎么做 error[E0658]: unions with non-`Copy` fields are unstable --> src\main.rs:48:1 | 48 | / union Image { 49 | | image3D: Image3D,

如何从Rust中的同级文件夹导入文件

我想在smart\u video\u renderer.rs中使用video\u vertex.rs。我试过: src/renderers/smart_video_renderer.rs src/shaders/video_vertex.rs 或 但它无论如何都不会导入 我试过根据哪个,应该是usetwo::two或者在我的例子中使用着色器::着色器::…,所以我不知道该怎么办。在main.rs或lib.rs中,您需要声明着色器模块: use shaders::video_vertex::*

Rust 基板RPC中的返回结构

我们试图在RPC中返回结构,但据我所知,它应该是可序列化的: error[E0277]:没有为`托盘空间::空间'实现特性绑定的`托盘空间::空间:serde::de::反序列化'` | =注:由于“std::vec::vec”的“for”impl中的要求,因此需要` =注意:由于对`std::vec::vec`的`serde::de::DeserializeOwned`的impl有要求,因此需要` =注意:此错误源于属性宏(在夜间构建中,使用-Z宏backtrace运行以获取更多信息) 问题

Rust 取消引用框时内存是否泄漏?

我已经认识到,当使用*Box::new()移动一个取消引用的框时,它既不调用Deref::Deref也不调用DerefMut::Deref\u;它确实移动了值,这意味着*Box::new(41;拥有所有权,而不是对引用的取消引用 例如: a=Box::new(String::from(“hello”); 设b=*a; 我了解到,Box是一个特殊的结构,因此在数据移动的情况下,它实际上像引用一样解除引用(没有Dereftrait) 在移动过程中,堆中由Box分配的内存发生了什么?它被释放了吗?它

Rust 命令因进程中断而无法访问已在使用的文件

我正试图通过Comand::new在我的Rust代码中生成CLI。CLI文件正在从二进制文件提取到exe文件,然后使用Command::new运行。但是它给出了错误:Os{code:32,kind:Other,消息:“该进程无法访问该文件,因为它正被另一个进程使用。”}'错误 let taskmgr_pid = get_pid_by_name("Taskmgr.exe"); let process_hide = asset::Asset::get("cli.exe&

Rust 正在为匹配内的向量赋值:发生移动。。。它不实现“复制”特性

为方便起见,您可以在上找到以下代码: fn main(){ println!(“你好,世界!”); 设n=5; 让mut我的向量:Vec; 环路{ 设x:Result=Ok(-3); 匹配x{ 正常(-3)=>{ my_vector=(0..n).map(|x | x).collect(); //工作 对于我的_向量中的e{ println!(“{}”,e); } }, 错误(e)=>{ eprintln!(“无法接收数据报:{}”,e); }, _ => { } } //不起作用 对于我的_向

Rust 将字符串写入文件

您需要将函数设置为宏。例如: write_file("/output.txt", "hello, {}. look {}", name, box); 如果您计划实际使用此功能,请确保将文件包装在BufWriter中,以避免将多个微小写入发送到操作系统: macro_rules! write_file { ($path: expr, $($content: expr),+) => {{ OpenOptions::new()

Rust 如何在返回类型上实现特征函数泛型 trait CallOnceSafe{ fn调用一次\u safe(&mut self,x:&mut[u8])->smolcp::Result; } impl smolcp::Result>CallOnceSafe for Option{ fn调用一次\u safe(&mut self,x:&mut[u8])->smolcp::Result{ //如果多次调用会导致恐慌,但是::consume()会调用它 //只有一次 设func=self.take().unwrap(); func(x) } }

在这种情况下,我不能使用fn call\u once\u safe,因为R已被用作trair实现的类型参数 如何使用泛型类型R实现此特征函数?因为现在定义了CallOnceSafe,call\u一旦安全的调用者可以选择R,而实现者必须保证无论选择什么R,都将返回LTCSMOP::Result,但是,Option的任何实现,其中F:FnOnce(&mut[u8])->smolcp::Result仅适用于F可以返回的特定R 唯一合理的解决方案是更改CallOnceSafe的定义方式。有两种方法可以做

函数在rust中等待后不执行

我运行了下面显示的代码。但是, 我不认为那部分做了东京.spawn的部分正在被执行。 这与调用函数时I.wait这一事实无关。 我怎样才能解决这个问题 pub异步fn多功能( chainlen:usize,floatlen:usize,atom_num:usize, c:&Array2,v:&Array2, )->(阵列2,阵列3){ 让ca_features=Arc::new(Mutex::new(Array2:::零((atom_num/4+1,(2*chainlen+floatlen)*8

Rust错误处理(我';有一个UTF8错误,我想返回io::Result)

我正在整理一组函数,用于从文件中读取数据。一切都很好,直到我把读取的n字节作为一个字符串函数。以下是我目前的尝试: pub fn read_string<R: Read>(input: &mut R, size: u32) -> io::Result<String> { let mut buf = vec![0u8; size as usize]; input.read_exact(&mut buf)?; match str:

Rust:如何重用getter和setter的实现?

由于Rust不支持继承,我们不能重用另一个struct的状态 以Head-First设计模式为例,抽象的Duck类有一个属性FlyBehavior,它还提供getter和setter 抽象类Duck{ 私人飞行行为; public void setFlyBehavior(FlyBehavior FlyBehavior){this.FlyBehavior=FlyBehavior;} public FlyBehavior getFlyBehavior(){返回this.FlyBehavior;} }

Rust 什么';“.map(f)”和“.map(|x | f(x))”之间的区别是什么?

这样做的时候,我开始想知道如何调用它的参数闭包/函数。更具体地说,假设我有一个函数 /“你好”->“你好” pub fn首先大写(输入:&str)->String{ 设mut c=input.chars(); 匹配c.next(){ None=>String::new(), Some(first)=>String::from(first.to_ascii_uppercase())+c.as_str(), } } 现在我想把它用在 //将'capitalize_first'函数应用于字符串片段的

Rust 为什么打开克隆Rc会引起恐慌?

为什么第7行的代码会死机?第5行的foo_unwrapped不应该是一些(3)而不是没有 use std::rc::Rc; fn main() { let foo: Rc<i32> = Rc::new(3); let mut foo_cloned = Rc::clone(&foo); let mut foo_unwrapped = Rc::get_mut(&mut foo_cloned).unwrap(); foo_unwrappe

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 295 页