DIP - Unique pointers
The use case for unique semantics is pretty common:
struct SmartPtr {
22 - Wrappers | |
35 - API | |
39 - Naming | |
60 - Security | |
73+74 - Logs | |
91 - Brevity | |
98 - Anti-patterns teaching | |
100 - 10.000 mistakes | |
104 - Guard rails | |
109 - Generic solutions |
Inspired by the board game "Scotland Yard".
The player is invisible, but leaves clues/breadcrumbs that let NPCs guess its path.
The IA can follow simple patterns (eg straigt lines, the player disappearing next to a ventilation duct) to anticipate the player and lay ambushes.
See Pocket
The main semantic interest (beside performance benefits) is the ability to write
if (entity.hasComponent!Foobar)
entity.component!(Foobar).doThing(...);
Also, apply a system only to entities with the relevant components (example?)
Start the Separatist playthrough in an Obviously Doomed Hometown.
Have really trivial tutorial quests, while dropping hints that the village is about to be attacked by the Empire. At the end, the Empire attacks, but is quickly repelled. The game plays on the player's expectation that the village will be destroyed for drama points.
"We know that the world is about to be consumed by a giant overwhelming alien organization, so does anything we do matter?"
NOTE: There has been some debate in the past as to what term best describes when a trait can be turned into a trait object with the syntax dyn MyTrait
. The current official term is "object safety", but it is widely agreed to be unsatisfying. We use "dyn-safety" in this document.
Progressively move the language towards having by-default dyn-safety for all traits.
To that end, add a new ?dyn
trait qualifier to indicate that template parameters accept a trait object.
I poured myself a cup of tea, floated down my books from upstairs, and sat down across from him.
There was no burst of energy or determination in my veins. I felt as frightened and unfocused and tired as I did an hour ago. And I wanted more than anything to get drunk, or play Jao Lu, or listen to the radio or watch something on one of those fancy new television sets.
I sat down at the coffee table, next to Hira. And I flipped open the book.
pub trait VirtualDom { | |
fn update_value(&mut self, other: Self); | |
#[track_caller] | |
fn init_tree(&self, cx: &mut Cx); | |
fn apply_diff(&self, other: &Self, cx: &mut Cx) -> bool; | |
} | |