iovxw

PhantomData 黑魔法

&'a mut &'a ()

use std::marker::PhantomData;

pub struct Magic<'a>(PhantomData<&'a mut &'a ()>);

impl<'a> Magic<'a> {
    pub fn as_ref(&'a self) -> &'a Self {
        &self
    }
}

fn main() {
    let pin = Magic(PhantomData);
    {
        pin.as_ref();
    }
    pin;
}

新 tokio 中的变动

架构更新

几个小时前, tokio 0.1.0 正式发布了

如果没有一直关注, 肯定是一脸茫然

tokio-core 呢? reactor::Core 又跑哪去了??

其实这是计划了差不多半年的一个变动

因为之前的 futurestokio 都只是 "能用" 的程度, 在被大量使用后暴露出了很多设计上的问题, 并且还有不少要放弃向后兼容才能修复

所以这次就攒到一起重新设计顺便分了个新的 crate

统计图的曲线插值

不会数学还想写图形界面?

很多程序, 比如各种监视器, 需要实时绘制统计图来将数据直观的展示给用户

而这个实时, 却又不是那么的 "实时", 一般表示一秒左右

不然一个监视器吃的资源比被监视程序还多, 就十分微妙了

通常为了偷懒, 直接画几条线把型值点连起来, 做成折线图, 然后一秒一秒的刷新就可以

但人是要有追求的! 我们要平滑! 要曲线!

所以便有了本文, 记录追求上帝所有物的流水帐

Rust 中的高阶生命期约束

Ruskell

这篇文章并不在讲什么是生命期, 请先确保有正确的生命期概念

虽然标题是说高阶生命期约束, 不过 RFC 本身是叫高阶 Trait 约束 (Higher Ranked Trait Bounds), 但由于目前只实现了生命期的部分, 所以……

言归正传, 在 serde 里, 会发现 DeserializeOwned 的定义是这样的

pub trait DeserializeOwned: for<'de> Deserialize<'de> { }

Rust 的 async/await

仍需努力

今天, Rust 的 Generator 支持终于被合并了!

这代表那拖了很久又很久的 Coroutine 也终于可以在 Nightly(2017-08-29) 里使用了

可喜可贺, 可喜可贺

那以后就可以愉快的在 Rust 里写异步代码啦?

想得美

坑在哪里我下面慢慢说

在 Merlin 上配置 rTorrrent 需要注意的

笔记备用

之前买的 RT-AC56U 一直没放什么东西,空转到现在

今天终于有了需求,拿它来挂 BT

这篇文章作为笔记,记一下遇到的坑,以后备用

Soul Knight Android 免 root 存档修改

勿滥用

挺好玩的 Roguelike 游戏(最近还加了联机模式,然而联机起来各种崩,戒指怕是有生之年了)

可惜没有云存档,在经历了某次事件后,我的存档和我说了再见

重新打?我没那毅力。不过既然是本地的,改起来也容易

流程如下:

博客静态生成器切换到 Cobalt

外观没变

抽空把博客生成器换到了 Cobalt

纯 Rust 编写,还支持用 syntect 对代码块高亮(虽然仅限 Linux 平台)

之前用 hugo 的时候说要修改啊贡献啊什么的结果也没做

这次一上来就发了个 PRpulldown 升级了还修了下 test

旧的 pulldown 各种毛病,<script> 标签之内都不能有空行,否则就解析成 Markdown

维护者曾经尝试升级不过高亮测试失败了,而他用 Windows 无法测试高亮,就卡在旧版本了

然后因为我在用 Linux ,顺便跑了一遍 test

结果发现原来的 test 本身就是错的,所以直接把正确结果拿出来覆盖上去 pass 了

嗯……有些时候问题真是简单呢

RT-AC56U

流水帐

上边这是华硕官网的介绍图,本以为他们还搞了个 3D 什么的,结果就是一堆图拼起来的,所以这里干脆用滑块代替了

Rust 使用 Sanitizers 进行运行时安全检查

还是实验性功能

6 天前, Rust 引入了由 LLVM 提供的实验性的 Sanitizer 支持 (仅限 x86_64-unknown-linux-gnu 平台)

而今天 Rust Nightly 默认启用了 Sanitizer, 就是说所有用 Nightly 的小伙伴都可以直接更新体验 Sanitizer 啦 (废话

目前有如下几个 Sanitizer:

当然这主要还是为 unsafe 准备的,毕竟其他大部分情况都能在编译时检测出来