Arenas vs. Indices:為型別寫函數要寫在型別裡還是外面?
作者舉了一些例子 下面簡單說明他討論的這個問題 他想為MVPArena寫一個add的函數 那把add這個函數從 impl MVPArena 移到外面 那首先就要解決生命週期的問題
struct MVPArena<T>(Vec<T>);
impl<T> MVPArena<T> {
fn add(&mut self, T value) -> Idx { .. }
}
type Idx = u32;
impl<T> Index<Idx> for MVPArena<T> {
type Output = T;
fn index(&self, idx: Idx) -> &T {
&self[idx as usize]
}
}
// ..
fn add(&mut self, value: T) -> Idx<'a> {
// ..
Idx(index, self.tag)
}
impl<'a, T> Index<Idx<'a>> for MVPArena<'a, T> {
type Output = T;
fn index(&self, idx: Idx<'a>) -> &'a T {
&self[idx.0 as usize]
}
}
另外當你要寫一個樹結構的時候會遇到更多問題 因為生命週期沒辨法離開當前的區塊範圍
struct Tree<'i>(Option<(Idx<'i>, Idx<'i>)>);
fn build_tree(arena: &mut Arena<'i, Tree<'i>>, depth: usize) {
if depth == 0 {
arena.add(Tree(None))
else {
arena.add(Tree(Some((build_tree(arena, depth - 1),
build_tree(arena, depth - 1)))))
}
}
in_arena(|arena| { build_tree(arena, 3); });
CRUST:試著用rust寫一個 C11 c compiler
作者想要學rust, 於是決定寫一個compiler來練練手
有人用rust實作了Peter Shirley's Ray Tracing的演算法
Steve Klabnik加入CloudFlare
一位rust大佬,他就是上次寫rust超越我的男人
Rust source code行數變化
使用工具 https://github.com/src-d/hercules
Future API終於要定案了!
一堆rust開發者都在等啊~~~~
Zola 0.6.0
一個快速的靜態網站產生器,讓人快速的產生blog上傳到github上
新版 HashMap 要合併到rust了
From 日报小组 @damody
日报订阅地址:
1
共 0 条评论, 1 页
评论区
写评论还没有评论