可以用 Rust 语言做哪些比较炫酷的事
发布网友
发布时间:2022-05-01 19:20
我来回答
共1个回答
热心网友
时间:2022-04-23 14:40
模式匹配 (更加抽象了一些逻辑的实现)
Rust
fn is_alpha_numeric(cc: u8) -> bool {
match cc {
97...122 | 65...90 | 48...57 => {
true
}
_ => {
false
}
}
}
JavaScript
function isAlphaNumeric(cc) {
// a - z
if (97 <= cc && cc <= 122) return true;
// A - Z
if (65 <= cc && cc <= 90) return true;
// 0 - 9
if (48 <= cc && cc <= 57) return true;
return false;
}
宏
macro_rules! vec {
($elem:expr; $n:expr) => (
$crate::vec::from_elem($elem, $n)
);
($($x:expr),*) => (
<[_]>::into_vec($crate::boxed::Box::new([$($x),*]))
);
($($x:expr,)*) => (vec![$($x),*])
}
虽然很多争议,有些人说会有性能开销。
但有时候很方便。要少写很多代码。
泛型
impl <T> GenVal<T> {
fn value(&self) -> &T { &self.0 }
}
虽然个人不太喜欢这个东西。但很多人觉得这是 Rust 的一个卖点。
接口和对象
trait Interface {
fn exposed(&self, a: &str) -> bool;
}
struct Implementation {
value: i32,
has: bool,
}
impl Interface for Implementation {
fn exposed(&self, a: &str) -> bool {
if self.value == 0 {
true
} else {
false
}
}
}
fn main() {
let i = Implementation {
value: 1,
has: false,
};
println!("{:?}", i.exposed("1"));
}
如果说其他有点酷的事,或许就是不用垃圾回收器,保证不出现内存泄露的问题。
很适合做游戏引擎,或者那些要求性能高,无延迟,同时又需要数据安全的事情。