avatar Nihil

Nichts Hsu

  • 首页
  • 子域
  • 分类
  • 标签
  • 归档
  • 关于
首页
Nihil
Preview Image

GameMaker 8.0 从入门到入土

这是我从2017年开始在 Heabot 论坛(已关停)编写的一系列关于 GameMaker 8.0 的教程,最早是想写在贴吧,但是贴吧嘛懂得都懂,格式乱+不能二次编辑+吞贴,于是选择了 Heabot 论坛。 该教程从 2017 年一直写到 2019 年才完成大部分内容,并且之后也一直有在增加新的内容,涵盖从完全新手入门到精通 GameMaker 8.0 的一切内容,如果对 GameMake...

2021/03/07 教程, GameMaker 8.0

[Rust] 幽灵索引类型与匿名结构体

幽灵索引类型 假设我们有一个这样的类型: #[derive(Debug, Clone, Copy)] struct Pair<T, U>(T, U); 并且,该类型保证 T 与 U 始终不会是相同的类型。那么,我们要如何设计一个统一的 get() 方法,使得下面的代码可以实现: let pair = Pair(1, "hello"); let first: i32 =...

2024/04/26 杂记, Rust

Rust 不透明类型上的生命周期

此文撰写于 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...

2024/02/18 杂记, Rust

从另一个视角看 Rust HRTBs

HRTBs,即高阶 Trait 约束(Higher-Rank Trait Bounds),在 Rust 中是令很多初学者感到莫名其妙的概念,一手 for<'a> S<'a> 的语法更是使得原本就复杂的生命周期更加吓人。 但是,如果从另一个角度对 HRTBs 进行解剖,或许我们能看到不一样的东西。 首先,让我们考虑一个泛型和闭包的应用: use std::fmt:...

2024/02/02 杂记, Rust

于 Rust 1.76 稳定的 trait upcasting coercion

由于在 Rust 1.76 发布前夕,trait upcasting coercion 突然发现了健全性问题,因此该特性已被取消稳定,目前还没有下一步的稳定计划。 先提出一个问题,在 Rust 中如何把一个 &dyn MyTrait 转换为 &MyStruct? trait MyTrait {} struct Foo; struct Bar; impl MyTrai...

2024/01/16 教程, Rust

[译] 改变 Rust 的规则

免责声明 本文是对原博文《Changing the rules of Rust》的无授权翻译转载,不享受任何著作权利,不用于任何商业目的,不以任何许可证进行授权,不对任何转载行为尤其是商业转载行为负责。一切权利均由原作者 “Without boats, dreams dry up” 保有。 本文中出现的所有第一人称均指代原作者 “Without boats, dreams dry up”...

2024/01/12 翻译, Rust

于 Rust 1.75 稳定的 RPITIT 与 AFIT

RPIT 在说 RPITIT 和 AFIT 之前,我们需要首先了解 RPIT,即:Return Position impl Trait。该特性又被称为 Abstract Return Types,简单来说,就是允许在函数的返回值类型中使用 impl Trait 的形式替代具体类型,例如: fn test_rpit() -> impl Iterator<Item = i32&g...

2023/12/22 教程, Rust

Rust: Generator 已死,Coroutine 当立,Generator 又活了

参考文献: Generators are dead, long live coroutines, generators are back Generalized coroutines 在曾经,Rust 通过不稳定特性 generators 和 generator_trait 提供 Generator 功能,大体使用方法如下: #![feature(generators, genera...

2023/11/07 杂记, Rust

Android.bp 中启用 openmp

在找到正确答案之前,我尝试了许多方法,例如: cc_binary { shared_libs: [ "libopenmp", ], } 又或者: cc_binary { cppflags: [ "-fopenmp" ], } 但是毫无例外地都失败了,以至于在很长一段时间内我都以为它压根不支持 openmp。 直到有...

2023/10/16 教程, Android

[C++] 不使用标准库和 lambda 实现柯里化

限制 由于 C++ 提供了 lambda 语法和强大的 functional 库,如果不做任何限制的话,那么实现柯里化是一件非常简单的事情。本文注重于介绍原理和过程,而不是最终结果,因此,让我们来做一些大胆的限制: 禁止使用任何标准库组件 禁止使用 lambda 语法 实现 Function 事实上,在我之前的文章 [C++] std::function 是如何实现 la...

2023/07/18 教程, Cpp
  • 1
  • 2
  • 3
  • ...
  • 5
  • 1 / 5

最近更新

  • 『I Wanna』 Best Bye To 2016
  • [译] Rust 中的内联
  • [Rust] 幽灵索引类型与匿名结构体
  • [C++] 深入了解左值与右值
  • Android.bp 中启用 openmp

热门标签

编程语言 教程 rust c++ android c++20 usb 翻译 linux qt
外部链接
  • 996.icu
  •  此博客的 Github 仓库
  •  Olimi 的个人博客

© 2024 Nichts Hsu. 保留部分权利。

本站采用 Jekyll 主题 Chirpy

热门标签

编程语言 教程 rust c++ android c++20 usb 翻译 linux qt

发现新版本的内容。