Expand description
§Rust bindings for Yare.io bots
This crate uses wasm-bindgen
to expose the objects available to
Yare.io bots to Rust.
It’s meant to be used with yareio-rust-template
,
which contains custom build scripts necessary to make wasm-bindgen
work with Yare.
This crate is documented with Rustdoc.
This crate is compatible with TypeScript, but you will need to use the TypeScript types from
yareio-typescript-typings
.
See also yare-rust for an alternative to this crate.
§Usage notes
The methods and structs this crate provides map pretty directly to what’s available in JS.
This means they won’t always be idiomatic Rust. For example, Deref
-based inheritance is ued extensively;
this is an antipattern for idiomatic
Rust but it’s also the most performant way to represent JS inheritance hierarchies, and it’s what wasm-bindgen
uses.
The idiomatic alternative would be to use trait objects, but this would add additional dynamic dispatch on top of what
JS already does, making it slower.
Passing values between WebAssembly and JS is slow, especially when those values aren’t numbers. Generally, any method in this crate that returns a value involves such a transfer of data (functions that return static references don’t). So be careful, and only retrieve the information you need.
For the reasons mentioned in the previous paragraphs, you may want to create you own structs and data structures to store the information you need.
§Shape features
To access shape-specific methods like merge()
, jump()
, and explode()
, you’ll need to enable the crate feature
corresponding to the shape you play with in your Cargo.toml
. The available shape features are circles
, squares
,
and triangles
.
§Prelude
This crate has a prelude
module that re-exports the most useful items. You can bulk-import them all with
use yareio_sys::prelude::*;
§RenderService
bindings
This crate optionally provides bindings for yare-code-sync
’s
RenderService
, under the render_service
module. You will need to enable the crate’s RenderService
feature to
use these bindings.
Modules§
- console
- Provides access to
console.log()
. - graphics
- Provides access to the built-in graphics methods.
- memory
- players
- Bindings relating to player IDs.
- prelude
- The most useful items to import.
- spirit
- Provides access to spirits.
- structure
- Provides access to structures (bases, outposts, and stars).
Macros§
- log
- Calls
console.log()
with the given comma-separated list ofInto<JsValue>
arguments.
Structs§
- Array
Typed Iter - Iterator returned by
EnumerateByID
’s methods. - Destructible
- Any
Entity
that can potentially be destroyed: can be aSpirit
orBase
. - DestructibleID
- The ID of a
Destructible
. - Entity
- Any object potentially on the game board: can be a
Spirit
,Base
,Outpost
, orStar
. - EntityID
- The ID of an
Entity
. - Living
Destructible - Any
Destructible
that has not yet been destroyed. - Living
DestructibleID - The ID of a
LivingDestructible
. - Living
Entity - Any object on the game board (not destroyed): can be a
Spirit
,Base
,Outpost
, orStar
. - Living
EntityID - The ID of a
LivingEntity
. - Outpost
Sight - The
sight
of an outpost. - Sight
- The
sight
of a spirit or base.
Enums§
Traits§
- Enumerate
ByID - This trait is implemented for the global objects that give mappings of IDs to entities:
spirits
,bases
,outposts
, andstars
. It allows iterating over entities by their ID. - GetByID
- This trait is implemented for the global objects that give mappings of IDs to entities:
spirits
,bases
,outposts
, andstars
. It allows fetching entities by their ID. - TryGet
ByID - This trait is implemented for the global objects that give mappings of IDs to entities:
spirits
,bases
,outposts
, andstars
. It allows faillibly fetching entities by their ID.
Functions§
- tick
tick
(the number of ticks since the start of the game).