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