有趣生活

当前位置:首页>科技>rust编程讲解Rust学习笔记-类型系统及多态是如何实现的

rust编程讲解Rust学习笔记-类型系统及多态是如何实现的

发布时间:2026-06-22阅读(2)

导读一门编程语言的类型系统会影响到开发者的形式和效率及程序员的安全性。因为对于计算机而言,它并不知道有什么类型,最终执行的都是一条条指令,或与内存打交道,内存中....

一门编程语言的类型系统会影响到开发者的形式和效率及程序员的安全性。 因为对于计算机而言,它并不知道有什么类型,最终执行的都是一条条指令,或与内存打交道,内存中的数据是字节流。

可以说类型系统是一种工具,用来做编译时对数据静态检查,和运行时对数据的动态检查。

类型系统基本概念与分类

类型系统其实就是对类型进行定义、检查和处理的系统 。针对类型的操作阶段不同,有不同的划分标准。

按定义后类型是否可以隐式转换,可以分为强类型和弱类型。Rust 不同类型间不能自动转换,所以是强类型语言,而 C / C / JavaScript 会自动转换,是弱类型语言。(这个有点突破认知了,之前一直以为C系是强类型语言呢!)

按类型检查的时机,在编译时检查还是运行时检查,可以分为静态类型系统和动态类型系统。对于静态类型系统,还可以进一步分为显式静态和隐式静态,Rust / Java / Swift 等语言都是显式静态语言,而 Haskell 是隐式静态语言。

在类型系统中,多态是一个非常重要的思想,它是指在使用相同的接口时,不同类型的对象,会采用不同的实现。(多态我们明天再聊。)

概念关系如下图:

Rust类型系统
  • 强类型语言:在定义时不允许类型的隐式转换。
  • 静态类型:编译期保证类型的正确。

这2点保障了Rust的类型安全。

从内存的角度看,类型安全是指代码,只能按照规定的方法,访问被授权的内存。以下图为例,一个类型为u64,长度是4的数组。

数据类型

Rust里的数据类型分为原生类型和组合类型。

  • 原生类型:字符、整数、浮点数、布尔值、数组(array)、元组(tuple)、切片(slice)、指针、引用、函数等。
  • 组合类型:Box、Option、Result、Vec、String、HashMap、RefCell等。
TAGS标签:  rust  编程  讲解  学习  rust编程讲解Ru

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图