&'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 0.1.0 正式发布了
如果没有一直关注, 肯定是一脸茫然
tokio-core 呢? reactor::Core
又跑哪去了??
其实这是计划了差不多半年的一个变动
因为之前的 futures 和 tokio 都只是 "能用" 的程度, 在被大量使用后暴露出了很多设计上的问题, 并且还有不少要放弃向后兼容才能修复
所以这次就攒到一起重新设计顺便分了个新的 crate
不会数学还想写图形界面?
很多程序, 比如各种监视器, 需要实时绘制统计图来将数据直观的展示给用户
而这个实时, 却又不是那么的 "实时", 一般表示一秒左右
不然一个监视器吃的资源比被监视程序还多, 就十分微妙了
通常为了偷懒, 直接画几条线把型值点连起来, 做成折线图, 然后一秒一秒的刷新就可以
但人是要有追求的! 我们要平滑! 要曲线!
所以便有了本文, 记录追求上帝所有物的流水帐
Ruskell
这篇文章并不在讲什么是生命期, 请先确保有正确的生命期概念
虽然标题是说高阶生命期约束, 不过 RFC 本身是叫高阶 Trait 约束 (Higher Ranked Trait Bounds), 但由于目前只实现了生命期的部分, 所以……
言归正传, 在 serde 里, 会发现 DeserializeOwned
的定义是这样的
pub trait DeserializeOwned: for<'de> Deserialize<'de> { }
仍需努力
今天, Rust 的 Generator 支持终于被合并了!
这代表那拖了很久又很久的 Coroutine 也终于可以在 Nightly(2017-08-29) 里使用了
可喜可贺, 可喜可贺
那以后就可以愉快的在 Rust 里写异步代码啦?
想得美
坑在哪里我下面慢慢说
笔记备用
之前买的 RT-AC56U 一直没放什么东西,空转到现在
今天终于有了需求,拿它来挂 BT
这篇文章作为笔记,记一下遇到的坑,以后备用
勿滥用
挺好玩的 Roguelike 游戏(最近还加了联机模式,然而联机起来各种崩,戒指怕是有生之年了)
可惜没有云存档,在经历了某次事件后,我的存档和我说了再见
重新打?我没那毅力。不过既然是本地的,改起来也容易
流程如下:
外观没变
抽空把博客生成器换到了 Cobalt
纯 Rust 编写,还支持用 syntect 对代码块高亮(虽然仅限 Linux 平台)
之前用 hugo 的时候说要修改啊贡献啊什么的结果也没做
这次一上来就发了个 PR 把 pulldown 升级了还修了下 test
旧的 pulldown 各种毛病,<script>
标签之内都不能有空行,否则就解析成 Markdown
维护者曾经尝试升级不过高亮测试失败了,而他用 Windows 无法测试高亮,就卡在旧版本了
然后因为我在用 Linux ,顺便跑了一遍 test
结果发现原来的 test 本身就是错的,所以直接把正确结果拿出来覆盖上去 pass 了
嗯……有些时候问题真是简单呢
流水帐
上边这是华硕官网的介绍图,本以为他们还搞了个 3D 什么的,结果就是一堆图拼起来的,所以这里干脆用滑块代替了
还是实验性功能
6 天前, Rust 引入了由 LLVM 提供的实验性的 Sanitizer 支持 (仅限 x86_64-unknown-linux-gnu
平台)
而今天 Rust Nightly 默认启用了 Sanitizer, 就是说所有用 Nightly 的小伙伴都可以直接更新体验 Sanitizer 啦 (废话
目前有如下几个 Sanitizer:
- LeakSanitizer 内存泄漏检查 (例如
Rc
环和 std::mem::forget
)
- ThreadSanitizer 数据竟态检查 (就是 go 的那个
-race
命令)
- AddressSanitizer 内存寻址检查 (比如数组访问越界)
- MemorySanitizer 未初始化内存的使用检查
当然这主要还是为 unsafe
准备的,毕竟其他大部分情况都能在编译时检测出来