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

2023-03-20 22:20:38 浏览数 (3)

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

数据结构

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

代码语言:txt复制
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
println!("{:?}", v);
输出结果:[1, 2, 3]

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

代码语言:txt复制
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是所存储元素的类型。以下是一个链表的示例:

代码语言:txt复制
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):单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供全局访问点。以下是一个单例模式的示例:

代码语言:txt复制
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):工厂模式是一种创建型设计模式,用于将对象的创建与使用分离,使得代码更加灵活。以下是一个工厂模式的示例:

代码语言:txt复制
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语言中常用的数据结构和设计模式的示例

0 人点赞