深紫色网站4399网页版

web/2025/9/27 4:29:31/文章来源:
深紫色网站,4399网页版,牛人网络网站,自学做网站一般要多久#x1f383;个人专栏#xff1a; #x1f42c; 算法设计与分析#xff1a;算法设计与分析_IT闫的博客-CSDN博客 #x1f433;Java基础#xff1a;Java基础_IT闫的博客-CSDN博客 #x1f40b;c语言#xff1a;c语言_IT闫的博客-CSDN博客 #x1f41f;MySQL#xff1a… 个人专栏 算法设计与分析算法设计与分析_IT闫的博客-CSDN博客 Java基础Java基础_IT闫的博客-CSDN博客 c语言c语言_IT闫的博客-CSDN博客 MySQL数据结构_IT闫的博客-CSDN博客 数据结构​​​​​​数据结构_IT闫的博客-CSDN博客 CC_IT闫的博客-CSDN博客 C51单片机C51单片机STC89C516_IT闫的博客-CSDN博客 基于HTML5的网页设计及应用基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​ pythonpython_IT闫的博客-CSDN博客 离散数学离散数学_IT闫的博客-CSDN博客 ​​​​​​Linux​​​​Linux_Y小夜的博客-CSDN博客 RustRust_Y小夜的博客-CSDN博客 欢迎收看希望对大家有用 目录 Trait简介 定义一个Trait 在类型上实现trait 实现trait的约束 默认实现 trait作为参数 Trait Bound语法 通过指定多个trait bound 通过where简化trait bound 实现Trait作为返回类型 使用Trait Bound有条件的实现方法 Trait简介 trait 定义了某个特定类型拥有可能与其他类型共享的功能。可以通过 trait 以一种抽象的方式定义共同行为。可以使用 trait bounds 指定泛型是任何拥有特定行为的类型。         注意trait 类似于其他语言中的常被称为 接口interfaces的功能虽然有一些不同。         Trait :抽象的定义共享行为。        Trait bounds约束泛型类型参数指定为实现特定行为的参数。        Trait与其他语言的接口interface类似但有些区别。 定义一个Trait 一个类型的行为由其可供调用的方法构成。如果可以对不同类型调用相同的方法的话这些类型就可以共享相同的行为了。trait 定义是一种将方法签名组合起来的方法目的是定义一个实现某些目的所必需的行为的集合。         展示了一个表现这个概念的公有 Summary trait 的定义 pub trait Summary {fn summarize(self) - String; }         在方法签名后跟分号而不是在大括号中提供其实现。接着每一个实现这个 trait 的类型都需要提供其自定义行为的方法体编译器也会确保任何实现 Summary trait 的类型都拥有与这个签名的定义完全一致的 summarize 方法。         trait 体中可以有多个方法一行一个方法签名且都以分号结尾。         只有只有方法签名没有具体实现。         实现该trait的类型必须提供具体的方法实现。 在类型上实现trait pub struct NewsArticle {pub headline: String,pub location: String,pub author: String,pub content: String, }impl Summary for NewsArticle {fn summarize(self) - String {format!({}, by {} ({}), self.headline, self.author, self.location)} }pub struct Tweet {pub username: String,pub content: String,pub reply: bool,pub retweet: bool, }impl Summary for Tweet {fn summarize(self) - String {format!({}: {}, self.username, self.content)} }         在类型上实现 trait 类似于实现与 trait 无关的方法。区别在于 impl 关键字之后我们提供需要实现 trait 的名称接着是 for 和需要实现 trait 的类型的名称。在 impl 块中使用 trait 定义中的方法签名不过不再后跟分号而是需要在大括号中编写函数体来为特定类型实现 trait 方法所拥有的行为。 实现trait的约束 现在库在 NewsArticle 和 Tweet 上实现了Summary traitcrate 的用户可以像调用常规方法一样调用 NewsArticle 和 Tweet 实例的 trait 方法了。唯一的区别是 trait 必须和类型一起引入作用域以便使用额外的 trait 方法。这是一个二进制 crate 如何利用 aggregator 库 crate 的例子 use aggregator::{Summary, Tweet};fn main() {let tweet Tweet {username: String::from(horse_ebooks),content: String::from(of course, as you probably already know, people,),reply: false,retweet: false,};println!(1 new tweet: {}, tweet.summarize()); }         不能为外部类型实现外部 trait。例如不能在 aggregator crate 中为 VecT 实现 Display trait。这是因为 Display 和 VecT 都定义于标准库中它们并不位于 aggregator crate 本地作用域中。这个限制是被称为 相干性coherence的程序属性的一部分或者更具体的说是 孤儿规则orphan rule其得名于不存在父类型。这条规则确保了其他人编写的代码不会破坏你代码反之亦然。没有这条规则的话两个 crate 可以分别对相同类型实现相同的 trait而 Rust 将无从得知应该使用哪一个实现。         默认实现 有时为 trait 中的某些或全部方法提供默认的行为而不是在每个类型的每个实现中都定义自己的行为是很有用的。这样当为某个特定类型实现 trait 时可以选择保留或重载每个方法的默认行为。 pub trait Summary {fn summarize(self) - String {String::from((Read more...))} }如果想要对 NewsArticle 实例使用这个默认实现可以通过 impl Summary for NewsArticle {} 指定一个空的 impl 块。 默认实现允许调用相同 trait 中的其他方法哪怕这些方法没有默认实现。 pub trait Summary {fn summarize_author(self) - String;fn summarize(self) - String {format!((Read more from {}...), self.summarize_author())} }为了使用这个版本的 Summary只需在实现 trait 时定义 summarize_author 即可 impl Summary for Tweet {fn summarize_author(self) - String {format!({}, self.username)} } 注意无法从相同方法的重载实现中调用默认方法。 trait作为参数 pub fn notify(item: impl Summary) {println!(Breaking news! {}, item.summarize()); }         对于 item 参数我们指定了 impl 关键字和 trait 名称而不是具体的类型。该参数支持任何实现了指定 trait 的类型。适用于简单的情况。 Trait Bound语法 impl Trait 语法适用于直观的例子它实际上是一种较长形式我们称为 trait bound语法的语法糖。它看起来像 pub fn notifyT: Summary(item: T) {println!(Breaking news! {}, item.summarize()); }         这与之前的例子相同不过稍微冗长了一些。trait bound 与泛型参数声明在一起位于尖括号中的冒号后面。   impl Trait 很方便适用于短小的例子。更长的 trait bound 则适用于更复杂的场景。 pub fn notify(item1: impl Summary, item2: impl Summary) {         这适用于 item1 和 item2 允许是不同类型的情况只要它们都实现了 Summary。不过如果你希望强制它们都是相同类型呢这只有在使用 trait bound 时才有可能 pub fn notifyT: Summary(item1: T, item2: T) { 通过指定多个trait bound 如果 notify 需要显示 item 的格式化形式同时也要使用 summarize 方法那么 item 就需要同时实现两个不同的 traitDisplay 和 Summary。 pub fn notify(item: (impl Summary Display)) {  语法也适用于泛型的 trait bound pub fn notifyT: Summary Display(item: T) { 通过where简化trait bound 使用过多的 trait bound 也有缺点。每个泛型有其自己的 trait bound所以有多个泛型参数的函数在名称和参数列表之间会有很长的 trait bound 信息这使得函数签名难以阅读。为此Rust 有另一个在函数签名之后的 where 从句中指定 trait bound 的语法。所以除了这么写 fn some_functionT: Display Clone, U: Clone Debug(t: T, u: U) - i32 { 还可以像这样使用 where 从句 fn some_functionT, U(t: T, u: U) - i32 whereT: Display Clone,U: Clone Debug, {实现Trait作为返回类型 fn returns_summarizable() - impl Summary {Tweet {username: String::from(horse_ebooks),content: String::from(of course, as you probably already know, people,),reply: false,retweet: false,} }         返回一个只是指定了需要实现的 trait 的类型的能力在闭包和迭代器场景十分的有用不过。         这只适用于返回单一类型的情况。 使用Trait Bound有条件的实现方法 通过使用带有 trait bound 的泛型参数的 impl 块可以有条件地只为那些实现了特定 trait 的类型实现方法。 use std::fmt::Display;struct PairT {x: T,y: T, }implT PairT {fn new(x: T, y: T) - Self {Self { x, y }} }implT: Display PartialOrd PairT {fn cmp_display(self) {if self.x self.y {println!(The largest member is x {}, self.x);} else {println!(The largest member is y {}, self.y);}} }         也可以对任何实现了特定 trait 的类型有条件地实现 trait。对任何满足特定 trait bound 的类型实现 trait 被称为 blanket implementations它们被广泛的用于 Rust 标准库中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站标题应怎设置网站开发技术书籍

一、简介 Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,这个容器是完全使用沙箱机制(限制容器内部对系统资源的访问),更重要的是容器性能开销极低。 正是因为…

怎么做网页站点网站建设国内外研究现况

高可用性矩阵-->见下图:邮箱服务器高可用性目标: 数据可用性-->保护邮箱数据免于失败和损坏服务可用性-->提高群集实效转移操作 简化群集管理 支持地理分散的群集 支持低成本大邮箱(GB)使用户可以基于业务需要更好的选择容错方案提高解决方案的可用性使用解决方案可…

重庆建设网站的公司h5响应式网站源码下载

1. 解决 将模型设置给表格视图之后,再设置tableveiw的列宽。 2. 参考 https://blog.csdn.net/ml29895063/article/details/132716687

企业门为什么要建设门户网站注册网站流程

原文链接:https://jonskeet.uk/csharp/memory.html人们在理解值类型和引用类型之间的差异时因为“值类型在栈上分配,引用类型在堆上分配”这句话造成了很多混乱。这完全是不对的,本文试图澄清这个问题。变量中有什么?理解.NET中内…

网站设计报告模板及范文建设银行网站怎么登陆不了了

在多处理器系统中,每处理器变量为每个处理器生成一个变量的副本,每个处理器访问自己的副本,从而避免了处理器之间的互斥和处理器缓存之间的同步,提高了程序的执行速度。 每处理器变量分为静态和动态两种。 静态每处理器变量 使…

网站建设与制作实验报告义乌网络布置

文章目录1. 题目2. 解题1. 题目 给你一个字符串 S,返回只含 单一字母 的子串个数。 示例 1: 输入: "aaaba" 输出: 8 解释: 只含单一字母的子串分别是 "aaa", "aa"&#x…

现代化的中国风网站wordpress畅言插件

开发短剧小程序微视频短剧系统需要以下几个步骤: 1. **需求分析**:确定小程序的主要功能,包括但不限于观看视频、点赞、评论、分享、收藏等功能。同时要考虑系统的兼容性和可扩展性,确保将来可能的更新和维护。 2. **选择合适的后…

卖服务器网站源码汽车4s店网站模板

高性能网络 SIG(Special Interest Group) :在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想&#xf…

资讯网站开发的背景手机网站怎么制作内容

目录 一、Ubuntu虚拟机创建 二、系统相关配置 1、设置系统hostname 2、网络配置及IP规划 3、配置FQDN(etc/hosts) 4、服务端口设置 三、TDengine server安装 1、服务安装 2、修改配置 3、启动taosd 4、服务卸载 四、客户端安装 1、client安…

提出网站推广途径和推广要点西安网络建站

C#基础知识回顾-- 反射(3)C#基础知识回顾-- 反射(3) 获取Type对象的构造函数: 前一篇因为篇幅问题因为篇幅太短被移除首页,反射这一块还有一篇“怎样在程序集中使用反射”, 其他没有什么可以写的了,前两篇主要是铺垫, ...沙盒操作的核心函数 - NSSearchPathForDirect…

国内建站源码搜索技巧

更好的排版阅读体验,请移步 微信端 开篇 前面两期详细的介绍了字符串及其相关操作,在今后的编程中,你将经常和字符串打交道。一个比较常见的场景就是输入输出,所以本期将结合字符串,讲述最基本同时也是最常用的输入输出…

做黏土的网站哪些网站可以做易拉宝

1、xxx:first-child 伪类 xxx作为第一个子元素 //p元素作为第一个子元素的都会变色 p:first-child { background:yellow; } //p作为父元素的 第一个子元素。不要求第一个元素的类型 p>:first-child {background:yellow; }//p作为父元素的 第一个子元素。要求第一个元素的类…

canvas 特效网站遵义网红打卡

文章目录 一、背景二、Openldap集成Kerberos2.1kerberos服务器中绑定Ldap服务器2.1.1创建LDAP管理员用户2.1.2添加principal2.1.3生成keytab文件2.1.4赋予keytab文件权限2.1.5验证keytab文件2.1.6增加KRB5_KTNAME配置 2.2Ldap服务器中绑定kerberos服务器2.2.1生成LDAP数据库Roo…

网站备案期间临时网页排版设计视频教程

昨天有幸看到了一个视频,视频中,一位老先生穿着朴素的白背心,伏在桌上,对着电脑,一手按着写满密密麻麻数学公式的本子,另一只手仅用单指吃力又缓慢地按着键盘。老先生全神贯注地研究他是 “背心院士” 高伯…

深圳龙江网站设计百度营销搜索推广

问题描述 近期spring官方公布了漏洞 - [CVE-2022-22965] 参考地址: https://tanzu.vmware.com/security/cve-2022-22965 参考issues提到的问题答案开发人员回应: 可能是由于Springframework 3.x 早于 JDK9发布,甚至发布时还未完整的支持JDK…

网站设计的七个原则杭州建筑人才网

概念 软件重用,也称为软件复用或软件再用,是利用事先已经建立好的软件产品,用于创建新软件系统的过程。 这个过程蕴含了两个主要的方面:一是系统地开发可重用的软件产品;二是系统地使用这些软件产品作为构筑模块&…

上海平台网站建设报价关于怎么做网站

前言 本博客记录的是Windows上一次网站搭建的过程,主要是在前端采用的是React,后端采用的是Flask,记录一下生产版本搭建流程和坑点,供有缘人一起进步,当然本博客还存在很多不足。 前端项目构建生产版本 以React为例…

网站建设与发布的预算网站代备案系统

在开发spring cloud的时候遇到一个很奇葩的问题,就是服务向spring eureka中注册实例的时候使用的是机器名,然后出现localhost、xxx.xx等这样的内容,如下图: eureka.instance.perferIpAddresstrue 我不知道这朋友用的什么spring c…

创欧科技 网站建设寻找客户的渠道和方法

随着2025年互联网的快速发展,越来越多的企业和个人意识到,拥有一个排名靠前的网站对于吸引客户、增加流量、提高转化率至关重要。而要想让自己的网站脱颖而出,获得更多曝光,最重要的一项工作就是进行SEO优化。传统的SEO优化方式通…

创意网站建设排行榜软件开发是啥

由于层次分析法的最大缺点为:主观性太强,影响判断,对结果有很大影响,所以提出了熵权法修正。 变异程度方差/标准差。 如何度量信息量的大小: 把不可能的事情变成可能,这里面就有很多信息量。 概率越大&…