Rust 为什么没有为'core::fmt::Show+;大小`?

我试图编译一些代码,但我得到了一个非常奇怪的错误: 对于类型core::fmt::Show+Sized 以及守则: use std::fmt::Show; fn main() { println!("{}", return_showed()); // Error occurs here } fn return_showed() -> Box<Show+Sized+'static> { box "test" as Box<Show+Sized> }

Rust 将BTreeMap类型的参数设置为可选

比如说,我有一个函数,它接受BTreeMap作为参数,我想让它成为可选的。更好的方式是什么: 保持原样(BTreeMap)并传递一个不带键和值的BTreeMap实例 使其成为选项 你的问题非常抽象,没有具体的例子就无法回答。坦率地说,这在很大程度上取决于所需的语义 您可能希望考虑的一些问题: 传递一个空的BTreeMap有意义吗 空BTreeMap和满BTreeMap之间的行为是否一致 如果做了一个选项,如果传递了一些空的BTreeMap,会发生什么 根据这些问题和其他类似的问题,您必须决

Rust 通过if语句的变量绑定工作不正常

我写了这段代码: let x = 5; let y = if x == 5 { 10 } else { println!("shapoopoy"); }; 当我使用cargo build编译时,我得到错误: 错误[E0308]:if和else具有不兼容的类型 -->src/main.rs:6:9 | 3 |设y=x=5{ | _____________- 4 | | 10 ||——正因为如此,这是意料之中的 5 | |}其他{ 6 | | println!(“

Rust 如何在调用函数时显示编译器警告?

我想在我的模块中导出一个函数,以便人们可以使用它。然而,在≈95%的情况下,使用它是一个坏主意 /// Check whether foo is a metasyntactic variable. /// /// **Using this function is a mistake.** This function is slow, /// since checking widgets is an extremely expensive operation. /// You should be

Rust 利用内部可变性实现索引

考虑到,为了简单起见,我想要实现一个具有n个连续元素0,1,…,n-1的可转位向量v,即v[I]=I。该向量应按需填充,即,如果使用v[i],且当前该向量包含nLazyVector{ 懒虫{ 数据:vec![] } } fn获取(&mut self,i:usize)->&usize{ 对于self.data.len()中的x=i{ 自我数据推送(i); } &自我数据[i] } } pub fn main(){ 设mut v=LazyVector::new(); println!([v[5]={

Rust 使用Result::map和Box时推断类型失败

为什么这个不能编译 trait T{} fn f,u>` 找到类型“std::result::result”` =帮助:必须约束类型参数以匹配其他类型 =注:有关更多信息,请访问https://doc.rust-lang.org/book/ch10-02-traits.html#traits-作为参数 这个版本还可以: trait T{} fn f这是一个限制,我不知道它是否有一天会编译。原因是Rust不知道如何在两种结果类型之间转换,(dynt+'static)和U是完全不同的东西。如果这可

带整数和浮点数的Rust中的泛型函数存在问题。在Rust中完成计算机程序的结构和解释

到目前为止,我有这个。我找不到一种方法来处理与足够好的比较。我正在研究计算机程序的结构和解释,我希望尽我所能符合本书中的实践。这个计划很简单。我明白了。只是需要帮助使我的防锈代码更通用 游乐场: 完成的操场:fn足够好(猜:T,x:T)->bool{ abs(square(guess)-x

Rust 无法从对选项的可变引用后面移出

我有一个结构: struct Foo Foo`,它不实现“Copy”特性 错误[E0596]:无法将'parent'借用为可变的,因为它未声明为可变的 -->src/lib.rs:9:13 | 8 |如果让某些(&mut parent)=自父{ 帮助--考虑改变这个是可变的:“沉默的父母” 9 | parent.bar(); |^^^^^^不能作为可变项借用 我尝试了该行的许多变体,但无法使其工作。我如何才能做到这一点?在您的if let语句中,您试图对self.parent进行解构,以获取p

Rust 是否从函数返回堆分配的值?

我是新手。为什么这个代码可以工作 fn生成字符串()->string{ 设x=String::from(“世界”); x } fn main(){ 设s=make_string(); } 按照我对规则的理解,当遇到make_string的右括号时,应该删除x的值,因为x是所有者,超出了范围。你可以说所有权转移了,但这似乎是在x超出范围后发生的 这是函数的特殊情况,还是我从根本上误解了规则?当您从函数返回值时,您移动该值,实质上是将所有权从该函数转移到父函数,父函数的作用域更大。由于作用域现在更

Rust 当你在锈迹中可变地阴影一个向量时会发生什么?

我目前正在学习rustlings课程,当这个关于移动语义的练习出现时,我感到困惑。其要点如下: fn main(){ let vec0 = Vec::new(); let mut vec1 = fill_vec(vec0); //stuff happens } fn fill_vec(vec: Vec<i32>) -> Vec<i32> { let mut vec = vec; //do stuff vec } fn main(){ 设v

这个Rust闭包参数语法是什么意思?

我修改了在internet上找到的代码,创建了一个函数,用于获取实现Eq的任何哈希类型的统计模式,但我不理解其中的一些语法。以下是函数: 使用std::hash::hash; 使用std::collections::HashMap; pub fn mode.max_by_key(|&(|,count)| count)相当于.max_by_key(f),其中f是: fn f<T>(t: &(T, usize)) -> usize { (*t).1 } 而f2()

Rust image::io::Reader:权限被拒绝

我正在尝试将一些图像加载到我的fltk rs应用程序中: fltk = "1.0.1" image = "0.23.14" 使用fltk:{app,app::*,window::*,prelude::*,window::window,button::*,group::*,image::*}; 使用std::fs; 使用图像::*; 使用image::io::Reader作为ImageReader; //.. 对于光标路径中的x,输入到{ 让mut but

Rust 是否可以使一种字体只可移动而不可复制?

编者按:这个问题是在Rust 1.0之前提出的,问题中的一些断言在Rust 1.0中未必正确。一些答案已经更新,以解决这两个版本 我有这个结构 struct Triplet { one: i32, two: i32, three: i32, } 如果我将其传递给函数,它将被隐式复制。现在,有时我读到一些值不可复制,因此必须移动 是否可以使此结构三元组不可复制?例如,是否有可能实现一种特性,使三元组不可复制,因此“可移动” 我在某个地方读到,一个人必须实现克隆特性来复制不

Rust 无法在板条箱名称中生成超无效字符“-”

我正在尝试运行Github自述文件中列出的hyper示例 extern crate hyper; use std::io::Write; use hyper::Server; use hyper::server::Request; use hyper::server::Response; use hyper::net::Fresh; fn hello(_: Request, res: Response<Fresh>) { let mut res = res.start(

Rust 如何装箱具有泛型类型参数的特征?

我通常能够使用trait作为Box之类的类型参数: trait CtxVal{} 类型CtxNodes=HashMap; 但是当这个特性有它自己的泛型类型参数时,比如,我被卡住了 type CtxNodes = HashMap<String, Box<PartialEq>>; 您需要指定希望对象能够与之进行比较的内容: fn foo(value: Box<PartialEq<u8>>) -> bool { *value == 42

Rust 为什么这个例子铁代码似乎阻止?

我在主页上运行以下hello world示例代码: extern crate iron; use iron::prelude::*; use iron::status; fn main() { fn hello_world(_: &mut Request) -> IronResult<Response> { Ok(Response::with((status::Ok, "Hello World!"))) } Iron::ne

Rust 为什么这个生锈函数没有';不行?

我试图理解如何在Rust中做一些简单的事情,但我一直在和借书人打交道,我不知道为什么。我已经编写了一个简单的函数,您可以在其中传递一个文件名,并在主目录中提供该文件的路径 节目如下: use std::env; fn filename_in_homedir(filename: &str) -> Option<&str> { let mut homedir = match env::home_dir() { None => retu

Rust 与枚举构造函数的模式匹配

我有一个枚举: pub enum Enum1 { A(String), B(i64), C(f64) } 我如何对一个目标进行模式匹配?也就是说,我想得到它的字符串值。我试过这个: match optionMyEnum { Some(A(x: String)) => ... 并且有很多编译错误。有一个完整的。我非常鼓励你阅读这一部分(以及整本书)。很多时间和精力都花在了文档上 您只需指定要绑定的名称。无需写出类型: pub enum Enum { A

Rust 显示带有for循环的矩阵时类型不匹配

灵感来源于evilone在帖子中提供的代码。为了显示矩阵,我编写了如下代码: use std::{ops, fmt}; #[derive(PartialEq, Debug)] pub struct Matrix<T> { data: Vec<T>, row: usize, col: usize, } impl<T: Copy> Matrix<T> { pub fn new(row: usize, c

Rust 存储对self的引用

我试图在Rust中创建一个节点网络,我希望网络中的每个节点都知道其他连接的节点。我认为这可以通过弱Rc来实现,比如: use std::cell::Cell; use std::cell::RefCell; use std::rc::Rc; use std::rc::Weak; struct Node { name: String, known_nodes: Rc<RefCell<Vec<Weak<Node>>>>, } imp

Rust 被此参数弄糊涂了,返回类型声明为不同的生存期,但此处返回来自“key”的数据 使用std::collections::HashMap; #[导出(Eq、散列、PartialEq)] struct Key)->选项(map:&'m HashMap,Key:&'k Key{ | -------- ----------------- | | |此参数和返回类型使用不同的生存期声明。。。 9 |地图获取(关键) |^^^^^^^^^^^^……但是这里返回来自“key”的数据

是的,key的生存期与返回类型的生存期不同,但我看不到“key中的数据是如何在这里返回的”…我看到map中的数据也是使用该键返回的..嗯,只是返回值后不再需要的键 在我看来,get应该适用于传入的任何'k和'kr。返回值的生存期应该与map的生存期相同。这就是我试图表达的,但显然我的想法在某个地方是错误的。您的签名中有两个键,它们应该是相关的,但您没有将它们联系起来。最简单的解决方案是让它们具有相同的寿命: use std::collections::HashMap; #[derive(Eq,

Rust 核心音频输出音频单元无法调用输入回调

我试图在Mac上使用Core audio录制音频,但我的输入回调没有被调用。我肯定我错过了一些明显的东西,但我整天都在寻找和尝试这些东西。我的代码是用Rust编写的,但希望C/C++的人不会太难理解。这是: extern crate coreaudio_sys; #[macro_use] extern crate objc; use std::mem::size_of_val; use std::os::raw::c_void; use std::ptr; use coreaudio_sys

Rust:在“Rust”期间指定模板参数;使用。。。作为「;进口

我试图为导入的类指定一个模板参数,这样就不需要每次使用它时都指定它。大概是这样的: use self::binary_heap_plus::BinaryHeap<T,MinComparator> as BinaryMinHeap<T>; 使用self::binary\u heap\u plus::BinaryHeap作为BinaryMinHeap; 这可能吗 这可能吗 是的,可能如下所示: pub type CustomResult<T> = Result

Rust 如何共享堆分配的trait对象?

我有一个trait和一个实现该trait的结构(trait对象)。我想在堆上分配我的trait对象,并让其他结构引用它们 箱场 这也是可行的,但据我所知,我的材料将在堆栈而不是堆上分配。如果Material的值真的很大,我宁愿把它放在堆上,那该怎么办?这就引出了下一种不编译的方法: 对方框的引用 struct Sphere src/main.rs:16:19 | 16 |材料:m1, |^^预期特征材料,发现结构“Iron”` | =注意:预期类型为“&std::boxed::BoxRc或Arc

如何通过在Rust中实现'Deref',返回由'Option'包装的引用?

我有一个包装器结构,它存储一个选项字段。我想获取此字段中存储的数据的引用。编译以下代码 struct包装器{ 瓦尔:选项 } impl包装器{ //删除了生存期说明符,因为Rust编译器可以推断它 //作为fn我的_deref选项{//它告诉我‘a从未被使用过。 瓦尔:选项 } 恳求{ 键入Target=Option Option阅读turbulencetoo的评论后,我想出了以下代码,它完全符合我的意图。根据程序逻辑,Option字段将永远不会是None,因此我可以安全地将其展开。出于与本主题

Rust 什么是非词汇生命期?

Rust与非词汇生命周期相关,而非词汇生命周期将在语言中长期实现,Rust对该功能的支持有了很大的改进,被认为是完整的 我的问题是:什么是非词汇生命期?通过了解生命期是什么,最容易理解什么是非词汇生命期。在非词法生存期出现之前的Rust版本中,此代码将失败: fn main() { let mut scores = vec![1, 2, 3]; let score = &scores[0]; scores.push(4); } Rust编译器发现score是由s

Rust 为什么不能使用impl trait返回多个/条件类型?

我正试图得到一个随机数发生器。由于OsRng::new()可能会失败,如果必须的话,我想回到thread\u rng(): extern crate rand; // 0.5.5 use rand::{thread_rng, OsRng, RngCore}; fn rng() -> impl RngCore { match OsRng::new() { Ok(rng) => rng, Err(e) => thread_rng()

Rust 从常量泛型类型创建别名类型

警告:这几乎生锈了。您需要执行以下命令行:rustup default nightly (和rustup default stable返回到以前的配置) 我想从另一个类型定义一个类型。 如果我从常量泛型类型(参见1)创建一个类型,它就可以工作。 但是如果我从另一个const泛型类型创建一个const泛型类型,它将不起作用(请参见2) 我该怎么办 #![特征(const_泛型)] 结构板{ 数组:[[T;宽度];高度], } a型=电路板;//工程(1) 类型SquareBoard=板;//不起作

Rust cargo如何决定是否重建deps?

我正在考虑跳过货物中的依赖项构建步骤。我有一个简单的项目,它使用3个板条箱作为Cargo.toml中提到的依赖项。我使用cargo build--release构建了一次项目。现在我有了另一个项目,它使用了它的Cargo.toml文件中提到的相同依赖项。我想跳过此项目的构建DEP,所以我只是通过在新项目的根目录中创建目标目录,将上一个项目的target/release/目录的内容复制到新项目中 我为新项目运行了cargo build--release,但它再次构建了所有依赖项。我认为它会跳过这一

Rust 在procmacro中的所有字段和子字段上递归调用函数

我有一个派生样式的过程宏,我想在其中计算结构的序列化版本的潜在最大长度。例如,给定下面的structTestStruct,我想用所有字段调用一些函数来计算最坏情况的长度 #[派生(MyLengthProcMacro)] 结构测试结构{ f1:u32, f2:i64, f3:SomeOtherStruct } 对于基本体,这可能类似于: fn获取字符串长度(ty:&Type)->usize{ 让type_string=quote!{#ty}.to_string(); 匹配类型\u string.

Rust 如何在nom 5.x中模拟take_直到_和_消费?

我已将我的nom依赖项从4.x版本更新为5.x版本,并发现宏take\u until\u和\u consume已被弃用。Changelog说: “这可以用take\u替换,直到与take组合使用。” 但是我不知道如何模仿直到你和你一起消费他们。 是否有人在版本更新时遇到过这样的问题,或者有人知道如何做到这一点 我是说这个不推荐的宏。这些新的:和我认为这是严格的,但这里有一个通用的实现: fn获取\u直到\u和\u消费(标记:T)->impl fn(I)->nom::IResult 哪里 E:no

Rust 如何为通道接收器的每个关闭在\u内执行异步数据库查询

我有一个期货mpsc,它以随机的时间间隔接收代表交易数据的结构,我处理这些数据,然后将其插入数据库 结构交易数据{ id:i64, 资料来源:Vec, } async fn my_task(rx:mpsc::Receiver)->impl Future{ 每个交易单位的接收(移动交易){ 异步的{ 让pool=pg_connection.connection_pool.unwrap().clone(); 让client=pool.get().wait.unwrap(); let statemen

Rust 自动导出Arc的特征实现

我有一个特性和一个实现它的struct。用Arc包装的struct可以调用trait的方法,但是Arc本身并没有实现它: use std::sync::Arc; trait Foo{ fn bar(&self); } struct A; impl Foo for A{ fn bar(&self){ } } fn test<A: Foo>(arc_a: Arc<A>){ let foo_obj: & dyn Foo

使用Rust在GTK GUI上呈现小的LaTeX片段 问题

我正在开发一个Rust程序,该程序使用给定的Rust gtk绑定具有GTK3 GUI。 该程序应该是跨平台的(至少是Linux和Windows)。 GUI应该能够显示自定义的明文和小的LaTeX片段,以允许使用数学环境(小的表示一个公式作为显示元素的大小)。 因此,我需要一种方法将LaTeX代码转换为GUI可以显示的内容 思想及其问题 我可以看到两种方法: 将LaTeX源代码编译成pdf,然后再编译成某种图像类型。应该可以使用Ghostscript来获取图像。但我不知道如何以一种轻量级(不包括

Rust无法构建64位RISC-V二进制文件

我正试图在我的台式计算机上构建一个riscv64gc二进制文件。我使用Rustop添加了工具链,它似乎是在编译,但没有链接。我没有看到三重传递的目标,也没有使用llvm链接器?发生什么事了 $ cargo build Compiling rusty v0.1.0 (/home/gonzo/github/vmscript/programs/rusty) error: linking with `cc` failed: exit code: 1 | = note: "cc&q

Rust 循环/赋值中:应为类型参数“T”,找到“&;T`

是什么导致了这个问题?它是如何工作的? 问题是,.iter()总是返回引用值。 揭示了以下几点: There are three common methods which can create iterators from a collection: iter(), which iterates over &T. iter_mut(), which iterates over &mut T. into_iter(), which iterates ove

Rust 由于生存期错误,生成光线跟踪世界时出现问题

我被困在如何最好地让世界生锈(这是一个光线跟踪器)。我试着在这里举个小例子 看操场。我有很多不同的生命周期错误,所以你可能更容易只看代码 trait Material{} 结构金属{} 金属{}的impl材料 特质命中{ fn命中(&self)->选项; } 结构球{ fn命中(&self)->选项{ 一些(HitRecord){ 材料:自我材料, }) } } 结构世界纪录{ 让mut world=world::default(); 设金属=金属{}; 让金属=世界。添加材料(金属); 设球体

Rust async_std 1.8为'async_std::channel'中的项具有未解析的导入`

我正在使用async_std构建应用程序,但这将返回一个未解决的导入错误: 使用async\u std::sync::Sender; 在查看了1.8.0的文档之后,似乎async\u std::sync支持async\u std::channel。事实并非如此 更新到1.8.0后,我尝试替换使用async\u std::sync::Sender与一起使用async_std::channel::Sender 文档似乎同意它应该可以工作,但我仍然得到一个未解决的导入错误 我缺少什么?您需要启用不稳

什么';这是一种惯用的打印迭代器的方法,用Rust中的空格分隔?

我只需要从std::env::args()中获取的参数变量的字符串之间用空格分隔,我一直在使用fold函数创建它,如下所示: std::env::args() .fold("".to_string(), |accum, s| accum + &s + " ") 但是,这会在末端产生多余的空间。我尝试使用truncate函数,但是truncate不返回字符串,只是修改现有的字符串,而且这需要创建一个中间绑定,以便使用字符串的len()调用以定义被截断的字符串的长度(我相信由于Ru

Rust 向下投射一个盒子<;dyn ForeignTrait>;在结构内部?

我的头在向下投射时有些困难 我有一个包含装箱特征的结构,例如: struct MyContainer{ 读者:盒子, } 我怎样才能将阅读器降级到我已知的类型 下面是我尝试做的一个简单示例: 通常,我会在特质上创建一个作为任何(&self),这将导致&dyn any,但这是一个我不拥有的外来特质。将你自己的特质定义为既有any又有Read作为超级特质,然后将其用作dyn类型 trait DowncastableRead:Read+Any{ fn as_any(&self)->&dyn any

Rust 如何修复不能像易变的那样借用,因为它是在一个`&;`参考

我是新手,正在尝试学习和实验,这里有一个到操场的链接,问题和解释如下: 使用std::fmt; #[派生(克隆、复制)] 结构动物{ fn new(name:&'a str)->Self{Self{name} } 结构Barn Barnfmt::Barn的调试{ 姓名:&'a str, 谷仓(农场主){ self.barns.push(谷仓) } fn将动物放置在谷仓中(&mut self,动物:动物,位置:&str){ 用于谷仓中的谷仓和自助谷仓{ //我该怎么做才能让它工作呢? 如果barn

Rust 通过使用板条箱::模块使用lib.rs中的模块

我试图在client.rs中使用parser\u utilities.rs中定义的pub函数 项目: src/client.rs src/lib.rs src/parser_utilities.rs client.rs: use crate::parser_utilities::{parse_c_seq, parse_session}; use rtsp_client::parser_utilities::{parse_c_seq, parse_session}; error[E0433]

Rust 为什么自引用结构需要pin?

我知道pin是做什么的,以及它是如何工作的,但是自引用对象不能移动,也不能获取&mut ref struct SelfRef<'a> { s: String, s_ref: Option<&'a str> } fn main() { let mut a = SelfRef { s: "hello".to_owned(), s_ref: None }; a.s_ref =

Rust 如何修改Petgraph边缘的源或目标?

Petgraph通过直接在图形上访问(graph[edge\u id])或通过update\u edge,可以非常轻松地更改边权重 但有时需要更改边连接的节点。是否有任何方法可以在位编辑边的源或目标?我还没有找到一个,所以我只是删除和重新创建边,但有时有点复杂

Rust:从std::Rc智能指针向量实现迭代器

我从生锈开始,我已经面临数据所有权方面的问题 我想实现一个名为Port的通用结构,它有一个值向量Vec。此外,此结构具有指向相同类型的其他结构的引用计数指针向量,Vec: 使用std::slice::Iter; 使用std::rc::rc; 发布结构端口{ 价值观:Vec, 港口:Vec, } 其思想如下:有多种类型的结构Port。您可以向给定端口添加类型为T的值。每个端口将这些值存储在其values属性中。但是,可以使用引用计数指针将一个端口“链接”到其他端口: impl端口{ pub fn

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