The using
	We take great inspiration from the language Jai, designed by Jonathan Blow. Our usingusing
	using
Let's begin with this snippet:
struct vec2     { x: f32; y: f32 }
struct Player   { position: vec2 }
fn move(ref player: Player, dist: vec2) {
    player.position.x += dist.x
    player.position.y += dist.y
}
	In a language like C++, if movePlayerplayer.position.*  to just position.*. We can achieve the same by usingplayermove
fn move(using ref player: Player, dist: vec2) {
    position.x += dist.x
    position.y += dist.y
}
	You can be using
	Any ambiguity is a hard error, so you won't be able to set using
	using
	using
fn move(ref player: Player, dist: vec2) {
    using ref pos = player.position
    x += dist.x
    y += dist.y
}
	Since the new pos
fn move(ref player: Player, dist: vec2) {
    using ref _ = player.position
    x += dist.x
    y += dist.y
}
... or skip the variable declaration altogether:
fn move(ref player: Player, dist: vec2) {
    using player.position
    x += dist.x
    y += dist.y
}
	using
	In an object-oriented language, one might consider having PlayerPosition*.position repeatedly. We can cleanly achieve the same by usingpositionPlayer
struct Player   { using position: vec2 }
fn move(using ref player: Player, dist: vec2) {
    x += dist.x
    y += dist.y
}
	You can be usingusingusing
	using
	Imagine you don't control the definition for PlayerPlayerPosition
	You can achieve the same by using
struct Player   { position: vec2 }
using fn getPlayerPosition(ref p: Player) p.position
fn move(ref player: Player, dist: vec2) {
    player.x += dist.x
    player.y += dist.y
}
Note that although here it doesn't make much of a difference, you can introduce this conversion edge in any scope:
fn move(ref player: Player, dist: vec2)
{
    using fn getPlayerPosition(ref p: Player) p.position
    player.x += dist.x
    player.y += dist.y
}
	Finally, to come full circle, yet another way to achieve the same thing would be by using
fn move(ref player: Player, dist: vec2)
{
    using fn getPlayerPosition() player.position
    x += dist.x
    y += dist.y
}
	Currently, usingusing