热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Copytrait是否仅从堆栈中进行位复制?

Rust文档将Copy标记类型定义为可以简单地通过复制位来复制其值的类型我想知道这个

Rust文档将Copy标记类型定义为

可以简单地通过复制位来复制其值的类型

我想知道这个定义是否意味着仅从堆栈中复制变量值,还是也包括复制堆资源?换句话说,Copy对于编译器来说,只是一个标志,带有类似“如果您要创建另一个具有相同值的这种类型的变量,只需从堆栈中复制与第一个变量相关的所有内容。这就足够了去做。”?

如果我有一个类型,其对象在堆中分配资源,并且我确信在通过memcpy某种方式对该资源进行位复制的情况下不会出现可怕的事情,该怎么办。我仍然不能用Copy(由于 Rust 只进行堆栈复制)来表示类型吗?

回答

我想知道这个定义是否意味着仅从堆栈中复制变量值,还是也包括复制堆资源?

是前者。它指的是通过对其数据执行朴素和浅层的逐字节复制来复制值。

更准确地说,Copy意味着“按位复制值并继续使用原始值是安全的”。所有 Rust 对象原则上都是按位复制的,无论是通过赋值还是传递给函数等。 对象不在时的区别Copy在于对象被称为移动,并且编译器不允许您访问该对象那是副本的来源。(如果它实现,编译器也不会删除原始对象,Drop因为它将被新所有者删除。)

换句话说,Copy 只是编译器的一个标志,带有类似“如果您要创建另一个具有相同值的这种类型的变量,只需从堆栈中复制与第一个变量有关的所有变量。那就是足够了。”?

是的。

如果我有一个类型,其对象在堆中分配资源,并且我确信在通过 memcpy 或其他方式对该资源进行位复制的情况下不会出现可怕的事情。我仍然不能用 Copy 表示类型吗(由于 Rust 只进行堆栈复制)?

没有办法(并且可能永远不会有办法)将这样的类型表示为Copy. 如果要允许复制此类对象,则必须创建它们Clone并要求用户.clone()明确键入。这就是声称 Rust“使分配明确”的意思之一。

请注意,这些都不需要在堆栈上分配副本的源或目标。它们也可以是堆分配对象的子字段,同样的原则同样适用。“堆栈”无关紧要:重要的是逐字节值传输是被视为“复制”还是“移动”,这取决于类型是否为Copy.






推荐阅读
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • 探讨异步 Rust 中多线程代码无法实现并行化的原因及解决方案。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 数组容量的动态调整与优化策略
    在探讨数组容量动态调整与优化策略时,本文分析了两种常见的方法。首先,通过使用for循环逐个复制元素实现扩容,但这种方法存在计算索引的复杂性问题。其次,利用System.arraycopy()方法进行高效复制,显著提升了性能和代码可读性。此外,文章还讨论了动态数组在不同应用场景下的优化策略,包括预分配容量和按需扩展等技术,以提高程序的整体效率。 ... [详细]
author-avatar
手机用户2502860131
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有