为什么 let s2 = s1 有时报错,有时不报错
从 C 转 Rust 重写 ACGHub,借用规则我自觉很快就懂了。结果真正把我看懵的,是一个看起来最不该出问题的操作——`let s2 = s1`,它一会儿编译报错,一会儿又安然无事。
· 4 min read
// tag
5 篇文章 · 0 条碎片
// articles
从 C 转 Rust 重写 ACGHub,借用规则我自觉很快就懂了。结果真正把我看懵的,是一个看起来最不该出问题的操作——`let s2 = s1`,它一会儿编译报错,一会儿又安然无事。
ACGHub 里到处是计数——点赞、收藏、回答数。我一直觉得:读出来 +1 再写回去,只要包进 BEGIN…COMMIT,事务保证原子性,就不会出错。这篇拆的就是这个「就不会出错吧」——它其实会,而搞懂它为什么会,得先把我对 MVCC 的误解也一起纠了。
乱码烦了我好多年——打游戏、改配置、传服务器,每次都靠玄学糊弄过去。直到把「字 → 码点 → 字节」这条链拆开,才明白:字从来没坏,是我每次都拿错了解码的那把尺子。
大一打游戏翻设置,抗锯齿那栏点开是 SSAA / MSAA / FXAA / SMAA / TAA 一长串全是缩写。好奇查了查才发现,它们其实都在跟同一个东西较劲——锯齿,而锯齿的根,是采样不够。