GameMaker 8.0 从入门到入土
这是我从2017年开始在 Heabot 论坛(已关停)编写的一系列关于 GameMaker 8.0 的教程,最早是想写在贴吧,但是贴吧嘛懂得都懂,格式乱+不能二次编辑+吞贴,于是选择了 Heabot 论坛。 该教程从 2017 年一直写到 2019 年才完成大部分内容,并且之后也一直有在增加新的内容,涵盖从完全新手入门到精通 GameMaker 8.0 的一切内容,如果对 GameMake...
这是我从2017年开始在 Heabot 论坛(已关停)编写的一系列关于 GameMaker 8.0 的教程,最早是想写在贴吧,但是贴吧嘛懂得都懂,格式乱+不能二次编辑+吞贴,于是选择了 Heabot 论坛。 该教程从 2017 年一直写到 2019 年才完成大部分内容,并且之后也一直有在增加新的内容,涵盖从完全新手入门到精通 GameMaker 8.0 的一切内容,如果对 GameMake...
幽灵索引类型 假设我们有一个这样的类型: #[derive(Debug, Clone, Copy)] struct Pair<T, U>(T, U); 并且,该类型保证 T 与 U 始终不会是相同的类型。那么,我们要如何设计一个统一的 get() 方法,使得下面的代码可以实现: let pair = Pair(1, "hello"); let first: i32 =...
此文撰写于 Rust stable 1.76.0(即 nightly 1.78.0)版本,由于 nightly 特性不受到 Rust 开发团队的保证,请谨慎甄别本文内容是否仍然适用。 抛出问题 在最前面,我们首先抛出一个问题,为什么下面的代码无法编译? use std::fmt::Debug; fn do_sth<F, Ret>(f: F) where F: F...
HRTBs,即高阶 Trait 约束(Higher-Rank Trait Bounds),在 Rust 中是令很多初学者感到莫名其妙的概念,一手 for<'a> S<'a> 的语法更是使得原本就复杂的生命周期更加吓人。 但是,如果从另一个角度对 HRTBs 进行解剖,或许我们能看到不一样的东西。 首先,让我们考虑一个泛型和闭包的应用: use std::fmt:...
由于在 Rust 1.76 发布前夕,trait upcasting coercion 突然发现了健全性问题,因此该特性已被取消稳定,目前还没有下一步的稳定计划。 先提出一个问题,在 Rust 中如何把一个 &dyn MyTrait 转换为 &MyStruct? trait MyTrait {} struct Foo; struct Bar; impl MyTrai...
免责声明 本文是对原博文《Changing the rules of Rust》的无授权翻译转载,不享受任何著作权利,不用于任何商业目的,不以任何许可证进行授权,不对任何转载行为尤其是商业转载行为负责。一切权利均由原作者 “Without boats, dreams dry up” 保有。 本文中出现的所有第一人称均指代原作者 “Without boats, dreams dry up”...
RPIT 在说 RPITIT 和 AFIT 之前,我们需要首先了解 RPIT,即:Return Position impl Trait。该特性又被称为 Abstract Return Types,简单来说,就是允许在函数的返回值类型中使用 impl Trait 的形式替代具体类型,例如: fn test_rpit() -> impl Iterator<Item = i32&g...
参考文献: Generators are dead, long live coroutines, generators are back Generalized coroutines 在曾经,Rust 通过不稳定特性 generators 和 generator_trait 提供 Generator 功能,大体使用方法如下: #![feature(generators, genera...
在找到正确答案之前,我尝试了许多方法,例如: cc_binary { shared_libs: [ "libopenmp", ], } 又或者: cc_binary { cppflags: [ "-fopenmp" ], } 但是毫无例外地都失败了,以至于在很长一段时间内我都以为它压根不支持 openmp。 直到有...
限制 由于 C++ 提供了 lambda 语法和强大的 functional 库,如果不做任何限制的话,那么实现柯里化是一件非常简单的事情。本文注重于介绍原理和过程,而不是最终结果,因此,让我们来做一些大胆的限制: 禁止使用任何标准库组件 禁止使用 lambda 语法 实现 Function 事实上,在我之前的文章 [C++] std::function 是如何实现 la...