- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码无法编译:
struct Ref<'a> {
nbr: &'a u32,
}
fn func<'a>() {
let nbr: u32 = 42;
let _a_ref: Box<Ref<'a>> = Box::new(Ref { nbr: &nbr });
}
fn main() {
func();
}
编译器提示 'nbr' 的生存时间不够长
,并且它在 func()
末尾被删除,同时仍然是借用的。我基本上到处都搜索过,但我不明白为什么会出现这个错误。与声明相比,变量应该以相反的顺序删除,因此包含引用的装箱 Ref
应该在删除 nbr
之前删除,对吗?
如果我将 func()
更改为:
fn func<'a>() {
let nbr: u32 = 42;
let _a_ref = Ref { nbr: &nbr };
}
它构建得很好!因此,盒装引用所需的生命周期/范围存在一些差异 - 但我找不到对这个明显基本问题的任何清晰而简单的解释。
为了让它更加困惑,我注意到如果我像这样声明 _a_ref
的类型:
fn func<'a>() {
let nbr: u32 = 42;
let _a_ref: Ref<'a> = Ref { nbr: &nbr };
}
我再次收到“nbr”生命周期不够长
错误。
最后,我使用了下划线,如下所示:
fn func<'a>() {
let nbr: u32 = 42;
let _a_ref: Ref<'_> = Ref { nbr: &nbr };
}
现在它又恢复正常了!这 3 种使用非装箱 Ref
结构的方法有什么区别?它们与盒装版本相比如何?
最佳答案
Box
不是这里的问题,'a
是。
&nbr
生命周期为nbr
。但是'a
是调用者选择的生命周期,它可能(甚至总是)大于 nbr
的生命周期。所以你不能分配 Ref<'nbr>
至Ref<'a>
.
Ref<'_>
意思是“让编译器推断生命周期”,基本上相当于根本不指定类型。
关于rust - 在 Rust 中,Box :ed struct compared to a plain struct? 的放置顺序是否存在差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77459294/
文件 A 包含 hash:plain文件 B 包含用户名:hash需要的输出用户名:plain有什么办法可以在 shell 中做到这一点吗? 最佳答案 使用带有cut的命令替换: echo $(cut
我可以看到来自邮件服务器的许多 ehlo 命令回显,如下所示: 我想知道“250-AUTH LOGIN PLAIN”和“250-AUTH=LOGIN PLAIN”有什么区别?谢谢 最佳答案 它们的意思
我试图了解两者之间的区别: 一个“普通” elasticsearch查询,它将与术语查询匹配,并返回一定数量的匹配。 和一个过滤的查询(因此使用过滤器)将返回相同的匹配数。 这是术语查询: GET _
我正在开发一个可以接收文件 url 的应用程序,并且应该根据文件类型(音频、视频、图像)做不同的事情。所以我以这种方式获取文件的内容类型: URLConnection connection = url
Nodemailer 使用完全相同的配置正常工作了几个月。 var smtpTransport = nodemailer.createTransport({ service: "Zoho", auth
我使用的是来自非正统终端的gradle,因此Gradle的传统“漂亮”输出不起作用。 有什么方法可以在〜/ .gradle / gradle.properties中指定每个gradle命令都应使用--
在 Julia 中,你不能存储这样的字符串: str = "\mwe" 因为有一个反斜杠。因此,以下内容可以帮助您防止这种情况发生: str = "\\mwe" "$,\n" 和许多其他符号也会发生同
我需要将 data.frame 对象“转换”为纯文本(如 print 输出到控制台。 到目前为止,我创建了以下函数(使用 stringr 包),但我想知道是否存在已实现的函数或更有效的方法: toSt
在 Julia 中,你不能存储这样的字符串: str = "\mwe" 因为有一个反斜杠。因此,以下内容可以帮助您防止这种情况发生: str = "\\mwe" "$,\n" 和许多其他符号也会发生同
我正在编写一个登录面板来访问管理面板。数据(用户名和密码)存储在 MySQL 数据库(类型:InnoDB)中。在表中查看密码以纯文本形式存储,在字段密码中我有:{普通}密码。 调整我已有的代码时,我遇
我正在尝试使用类名 Plain Javascript 获取第一个子元素。 我正在尝试编写自己的表单验证并尝试附加错误消息并将其删除。如果错误消息已经存在,则不要追加。 如果您帮助我完成第一部分,为 c
问题:使元组的元组“简单”的最佳方法是什么?例如。一维。 案例 1 template auto process_field(Field&& field){ // or another std
我正在编写一个 Web 应用程序 API,当有人访问 URL 时,它会返回文本数据。我将内容类型设置为“文本/纯文本”,但是当我使用 Chrome 访问它时,它会下载一个包含信息的文件,而不是显示它。
我尝试将文本粘贴到多个字段中,但只清除了第一个元素的格式,而不是第二个元素等。 我发现了这个问题 https://stackoverflow.com/a/12028136/3955607这工作正常,但
我有一个查询,它使用聚合函数将值的 maximum absolute 分配给表中的另一列。问题是查询完成时间需要花费大量时间(大约加起来 10-15 秒)。这是查询的样子: UPDATE calcul
我在尝试使用 text/plain 时收到以下响应: { "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13", "
我想做的是- For Clients to Broker communication - use OAUTHBEARER authentication For Broker to Broker com
我了解 th:if 如何用于 html 模板,但是当您期望纯文本(用例:纯文本电子邮件模板)时,我没有找到有关如何执行此操作的任何线索。 到目前为止,我尝试过: Dear [[${contact
我有以下代码: NSURL *URL = [NSURL URLWithString:[@"some-address"]]; NSMutableURLRequest *request = [NSMuta
关闭。这个问题需要多问focused 。目前不接受答案。 已关闭10 年前。 已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 有人可以用简单的
我是一名优秀的程序员,十分优秀!