RUST语言中常用的数据结构和设计模式的示例

举报
赵KK日常技术记录 发表于 2023/06/24 17:30:25 2023/06/24
【摘要】 ![请在此添加图片描述](https://developer.qcloudimg.com/http-save/yehe-admin/535582902a7f30bff21f535522c01097.png?qc_blockWidth=770&qc_blockHeight=480)​RUST语言是一种现代化的系统编程语言,它支持多种数据结构和设计模式,以下是一些常用的数据结构和设计模式及其代码...
![请在此添加图片描述](https://developer.qcloudimg.com/http-save/yehe-admin/535582902a7f30bff21f535522c01097.png?qc_blockWidth=770&qc_blockHeight=480)


RUST语言是一种现代化的系统编程语言,它支持多种数据结构和设计模式,以下是一些常用的数据结构和设计模式及其代码示例。

数据结构

(1)向量(Vector):向量是一种动态数组,可以在运行时改变大小。使用Vec<T>类型,其中T是所存储元素的类型。以下是一个向量的示例:

```
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
println!("{:?}", v);
输出结果:[1, 2, 3]
```

(2)哈希表(HashMap):哈希表是一种键值对存储结构,可以用于快速查找和插入。使用HashMap<KV>类型,其中K是键的类型,V是值的类型。以下是一个哈希表的示例:

```
use std::collections::HashMap;

let mut scores = HashMap::new();
scores.insert("Alice", 100);
scores.insert("Bob", 90);
scores.insert("Charlie", 80);
println!("{:?}", scores);
输出结果:{"Charlie": 80, "Bob": 90, "Alice": 100}
```

(3)链表(LinkedList):链表是一种动态数据结构,可以在运行时改变大小。使用LinkedList<T>类型,其中T是所存储元素的类型。以下是一个链表的示例:

```
use std::collections::LinkedList;

let mut list = LinkedList::new();
list.push_back(1);
list.push_back(2);
list.push_back(3);
println!("{:?}", list);
输出结果:[1, 2, 3]
```

设计模式

(1)单例模式(Singleton):单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供全局访问点。以下是一个单例模式的示例:

```
Copy
struct Singleton {}

impl Singleton {
    fn new() -> Self {
        Singleton {}
    }
}

fn main() {
    let s1 = Singleton::new();
    let s2 = Singleton::new();
    assert!(std::ptr::eq(&s1, &s2));
}
```

(2)工厂模式(Factory):工厂模式是一种创建型设计模式,用于将对象的创建与使用分离,使得代码更加灵活。以下是一个工厂模式的示例:

```
trait Shape {
    fn draw(&self);
}

struct Circle {}

impl Shape for Circle {
    fn draw(&self) {
        println!("Draw a circle");
    }
}

struct Square {}

impl Shape for Square {
    fn draw(&self) {
        println!("Draw a square");
    }
}

struct ShapeFactory {}

impl ShapeFactory {
    fn create_shape(&self, shape_type: &str) -> Box<dyn Shape> {
        match shape_type {
            "circle" => Box::new(Circle {}),
            "square" => Box::new(Square {}),
            _ => panic!("Unsupported shape type"),
        }
    }
}

fn main() {
    let factory = ShapeFactory {};
    let circle = factory.create_shape("circle");
    let square = factory.create_shape("square");
    circle.draw();
    square.draw();
}
```

以上是RUST语言中常用的数据结构和设计模式的示例
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。