Trait jumpy::prelude::bones_schema::HasSchema

pub unsafe trait HasSchema: Sync + Send + 'static {
    // Required method
    fn schema() -> &'static Schema;

    // Provided methods
    fn register_schema() { ... }
    fn cast<T>(this: &Self) -> &T
       where T: HasSchema { ... }
    fn try_cast<T>(this: &Self) -> Result<&T, SchemaMismatchError>
       where T: HasSchema { ... }
    fn cast_mut<T>(this: &mut Self) -> &mut T
       where T: HasSchema { ... }
    fn try_cast_mut<T>(this: &mut Self) -> Result<&mut T, SchemaMismatchError>
       where T: HasSchema { ... }
    fn as_schema_ref(&self) -> SchemaRef<'_>
       where Self: Sized { ... }
    fn as_schema_mut(&mut self) -> SchemaRefMut<'_>
       where Self: Sized { ... }
}
Expand description

Trait implemented for types that have a [Schema].

§Safety

This trait is unsafe to implement manually because it makes claims about the memory layout of a type that may be depended on in unsafe code, but it is safe to derive HasSchema on supported types.

If implemented manually, you must ensure that the schema accurately describes the memory layout of the type, or else accessing the type according to the schema would be unsound.

Required Methods§

fn schema() -> &'static Schema

Get this type’s [Schema].

Provided Methods§

fn register_schema()

Register this schema with the global schema registry.

This is automatically done by the framework in many cases, whenever schema() is called, but it may be necessary sometimes to manually register it.

fn cast<T>(this: &Self) -> &T
where T: HasSchema,

Cast a reference of this type to a reference of another type with the same memory layout.

§Panics

Panics if the schema of T doesn’t match the schema of Self.

fn try_cast<T>(this: &Self) -> Result<&T, SchemaMismatchError>
where T: HasSchema,

Cast a reference of this type to a reference of another type with the same memory layout.

§Errors

Errors if the schema of T doesn’t match the schema of Self.

fn cast_mut<T>(this: &mut Self) -> &mut T
where T: HasSchema,

Cast a mutable reference of this type to a reference of another type with the same memory layout.

§Panics

Panics if the schema of T doesn’t match the schema of Self.

fn try_cast_mut<T>(this: &mut Self) -> Result<&mut T, SchemaMismatchError>
where T: HasSchema,

Cast a mutable reference of this type to a reference of another type with the same memory layout.

§Errors

Errors if the schema of T doesn’t match the schema of Self.

fn as_schema_ref(&self) -> SchemaRef<'_>
where Self: Sized,

Converts a reference of T to a SchemaRef

fn as_schema_mut(&mut self) -> SchemaRefMut<'_>
where Self: Sized,

Converts a reference of T to a SchemaRefMut

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl HasSchema for bool

§

fn schema() -> &'static Schema

§

impl HasSchema for f32

§

fn schema() -> &'static Schema

§

impl HasSchema for f64

§

fn schema() -> &'static Schema

§

impl HasSchema for i8

§

fn schema() -> &'static Schema

§

impl HasSchema for i16

§

fn schema() -> &'static Schema

§

impl HasSchema for i32

§

fn schema() -> &'static Schema

§

impl HasSchema for i64

§

fn schema() -> &'static Schema

§

impl HasSchema for i128

§

fn schema() -> &'static Schema

§

impl HasSchema for isize

§

fn schema() -> &'static Schema

§

impl HasSchema for u8

§

fn schema() -> &'static Schema

§

impl HasSchema for u16

§

fn schema() -> &'static Schema

§

impl HasSchema for u32

§

fn schema() -> &'static Schema

§

impl HasSchema for u64

§

fn schema() -> &'static Schema

§

impl HasSchema for u128

§

fn schema() -> &'static Schema

§

impl HasSchema for ()

§

fn schema() -> &'static Schema

§

impl HasSchema for usize

§

fn schema() -> &'static Schema

§

impl HasSchema for String

§

fn schema() -> &'static Schema

§

impl HasSchema for LogFileGuard

§

fn schema() -> &'static Schema

§

impl HasSchema for NetworkDebug

§

fn schema() -> &'static Schema

§

impl HasSchema for NetworkMatchSocket

§

fn schema() -> &'static Schema

§

impl HasSchema for PlayerNetworkStats

§

fn schema() -> &'static Schema

Implementors§

source§

impl HasSchema for MusicState

source§

impl HasSchema for CrabState

source§

impl HasSchema for Snail

source§

impl HasSchema for TileCollisionKind

source§

impl HasSchema for ColliderShape

source§

impl HasSchema for EmoteState

source§

impl HasSchema for EaseFunction

source§

impl HasSchema for ControlSource

source§

impl HasSchema for InputKind

source§

impl HasSchema for MenuPage

§

impl HasSchema for AssetKind

§

impl HasSchema for ButtonState

§

impl HasSchema for CameraSize

§

impl HasSchema for Color

§

impl HasSchema for GamepadAxis

§

impl HasSchema for GamepadButton

§

impl HasSchema for GamepadConnectionEventKind

§

impl HasSchema for GamepadEvent

§

impl HasSchema for GamepadRumbleRequest

§

impl HasSchema for Image

§

impl HasSchema for KeyCode

§

impl HasSchema for SyncingInfo

source§

impl HasSchema for ShuffledPlaylist

source§

impl HasSchema for Attachment

source§

impl HasSchema for AttachmentEasing

source§

impl HasSchema for AttachmentEasingMeta

source§

impl HasSchema for AttachmentMeta

source§

impl HasSchema for HadPlayerBodyAttachmentMarker

source§

impl HasSchema for PlayerBodyAttachment

source§

impl HasSchema for Bullet

source§

impl HasSchema for BulletHandle

source§

impl HasSchema for BulletMeta

source§

impl HasSchema for CameraState

source§

impl HasSchema for CameraSubject

source§

impl HasSchema for ParallaxBackgroundSprite

source§

impl HasSchema for DamageRegion

source§

impl HasSchema for DamageRegionOwner

source§

impl HasSchema for DebugSettings

source§

impl HasSchema for RapierDebugContext

source§

impl HasSchema for Buss

source§

impl HasSchema for BussMeta

source§

impl HasSchema for Cannon

source§

impl HasSchema for CannonMeta

source§

impl HasSchema for CrabCritter

source§

impl HasSchema for CrabMeta

source§

impl HasSchema for CrateMeta

source§

impl HasSchema for IdleCrate

source§

impl HasSchema for ThrownCrate

source§

impl HasSchema for AnimatedDecorationMeta

source§

impl HasSchema for Fish

source§

impl HasSchema for FishSchool

source§

impl HasSchema for FishSchoolMeta

source§

impl HasSchema for ExplodeFlappyJellyfish

source§

impl HasSchema for FlappyJellyfish

source§

impl HasSchema for FlappyJellyfishMeta

source§

impl HasSchema for GrenadeMeta

source§

impl HasSchema for IdleGrenade

source§

impl HasSchema for LitGrenade

source§

impl HasSchema for DehydrateJellyfish

source§

impl HasSchema for Jellyfish

source§

impl HasSchema for JellyfishMeta

source§

impl HasSchema for PlayerDrivingJellyfish

source§

impl HasSchema for IdleKickBomb

source§

impl HasSchema for KickBombHandle

source§

impl HasSchema for KickBombMeta

source§

impl HasSchema for LitKickBomb

source§

impl HasSchema for MachineGun

source§

impl HasSchema for MachineGunMeta

source§

impl HasSchema for IdleMine

source§

impl HasSchema for MineMeta

source§

impl HasSchema for ThrownMine

source§

impl HasSchema for Musket

source§

impl HasSchema for MusketMeta

source§

impl HasSchema for Periscope

source§

impl HasSchema for PeriscopeMeta

source§

impl HasSchema for CurrentSpawner

source§

impl HasSchema for PlayerSpawner

source§

impl HasSchema for PlayerSpawnerMeta

source§

impl HasSchema for Slippery

source§

impl HasSchema for SlipperyMeta

source§

impl HasSchema for SlipperySeaweed

source§

impl HasSchema for SlipperySeaweedMeta

source§

impl HasSchema for SnailMeta

source§

impl HasSchema for Spike

source§

impl HasSchema for SpikeMeta

source§

impl HasSchema for Sproinger

source§

impl HasSchema for SproingerMeta

source§

impl HasSchema for StompBoots

source§

impl HasSchema for StompBootsMeta

source§

impl HasSchema for WearingStompBoots

source§

impl HasSchema for WornStompBoots

source§

impl HasSchema for DehydrateOutOfBounds

source§

impl HasSchema for ElementEditorMeta

source§

impl HasSchema for ElementHandle

source§

impl HasSchema for ElementKillCallback

source§

impl HasSchema for ElementMeta

source§

impl HasSchema for ElementSolid

source§

impl HasSchema for ElementSolidMeta

source§

impl HasSchema for MapElementHydrated

source§

impl HasSchema for Spawner

source§

impl HasSchema for SpawnerEntities

source§

impl HasSchema for PendingDamageRegions

source§

impl HasSchema for Sword

source§

impl HasSchema for SwordMeta

source§

impl HasSchema for Urchin

source§

impl HasSchema for UrchinMeta

source§

impl HasSchema for ElementLayer

source§

impl HasSchema for MatchInputs

source§

impl HasSchema for PlayerInput

source§

impl HasSchema for DropItem

source§

impl HasSchema for Inventory

source§

impl HasSchema for Item

source§

impl HasSchema for ItemDropped

source§

impl HasSchema for ItemGrab

source§

impl HasSchema for ItemGrabbed

source§

impl HasSchema for ItemThrow

source§

impl HasSchema for ItemUsed

source§

impl HasSchema for Invincibility

source§

impl HasSchema for Lifetime

source§

impl HasSchema for LoadedMap

source§

impl HasSchema for MapSpawned

source§

impl HasSchema for NavGraph

source§

impl HasSchema for SpawnedMapLayerMeta

source§

impl HasSchema for SpawnedMapMeta

source§

impl HasSchema for MapPool

source§

impl HasSchema for BackgroundMeta

source§

impl HasSchema for ElementSpawn

source§

impl HasSchema for MapLayerMeta

source§

impl HasSchema for MapMeta

source§

impl HasSchema for MapTileMeta

source§

impl HasSchema for ParallaxLayerMeta

source§

impl HasSchema for BodyAnimationsMeta

source§

impl HasSchema for EmoteMeta

source§

impl HasSchema for HatMeta

source§

impl HasSchema for Offsets

source§

impl HasSchema for PlayerBodyLayerMeta

source§

impl HasSchema for PlayerLayerMeta

source§

impl HasSchema for PlayerLayersMeta

source§

impl HasSchema for PlayerMeta

source§

impl HasSchema for PlayerSoundsMeta

source§

impl HasSchema for PlayerStatsMeta

source§

impl HasSchema for CameraMeta

source§

impl HasSchema for CoreConfigMeta

source§

impl HasSchema for CoreMeta

source§

impl HasSchema for PhysicsMeta

source§

impl HasSchema for PhysicsPlayerMeta

source§

impl HasSchema for ColliderShapeCache

source§

impl HasSchema for Actor

source§

impl HasSchema for Collider

source§

impl HasSchema for RapierContext

source§

impl HasSchema for Solid

source§

impl HasSchema for TileDynamicCollider

source§

impl HasSchema for TileRapierHandle

source§

impl HasSchema for DynamicBody

source§

impl HasSchema for KinematicBody

source§

impl HasSchema for PlayerRagdollState

source§

impl HasSchema for PlayerState

source§

impl HasSchema for AiPlayer

source§

impl HasSchema for EmoteRegion

source§

impl HasSchema for Hat

source§

impl HasSchema for PathfindingDebugLines

source§

impl HasSchema for PlayerIdx

source§

impl HasSchema for PlayerKilled

source§

impl HasSchema for PlayerLayers

source§

impl HasSchema for PlayersHaveSpawned

source§

impl HasSchema for GlobalRng

source§

impl HasSchema for MatchScore

source§

impl HasSchema for RoundScoringState

source§

impl HasSchema for EaseMeta

source§

impl HasSchema for WinIndicatorMeta

source§

impl HasSchema for DebugMenuState

source§

impl HasSchema for GlobalPlayerControls

source§

impl HasSchema for PlayerControl

source§

impl HasSchema for PlayerInputCollector

source§

impl HasSchema for ProfilerState

source§

impl HasSchema for PlayerControlMapping

source§

impl HasSchema for PlayerControlSetting

source§

impl HasSchema for Settings

source§

impl HasSchema for VirtualDPad

source§

impl HasSchema for GameMeta

source§

impl HasSchema for GameMusic

source§

impl HasSchema for NetworkMeta

source§

impl HasSchema for PackMeta

source§

impl HasSchema for PlayerSelectState

source§

impl HasSchema for MainMenuMeta

source§

impl HasSchema for PauseMenu

source§

impl HasSchema for ScoringMenuState

source§

impl HasSchema for ImageMeta

source§

impl HasSchema for UiTheme

source§

impl HasSchema for UiThemeButtons

source§

impl HasSchema for UiThemeColors

source§

impl HasSchema for UiThemeEditor

source§

impl HasSchema for UiThemeEditorIcons

source§

impl HasSchema for UiThemeFontStyles

source§

impl HasSchema for UiThemePanel

source§

impl HasSchema for UiThemeWidgetColors

source§

impl HasSchema for UiThemeWidgets

§

impl HasSchema for SchemaLuaEcsRefMetatable

§

impl HasSchema for FrameDiagState

§

impl HasSchema for AnimatedSprite

§

impl HasSchema for AnimationBankSprite

§

impl HasSchema for AssetServer

§

impl HasSchema for Atlas

§

impl HasSchema for AtlasCollisionTile

§

impl HasSchema for AtlasSprite

§

impl HasSchema for Audio

§

impl HasSchema for AudioCenter

§

impl HasSchema for AudioManager

§

impl HasSchema for AudioSource

§

impl HasSchema for BVec2

§

impl HasSchema for BVec3

§

impl HasSchema for BVec4

§

impl HasSchema for BorderImageMeta

§

impl HasSchema for ButtonBordersMeta

§

impl HasSchema for ButtonThemeMeta

§

impl HasSchema for Camera

§

impl HasSchema for CameraShake

§

impl HasSchema for CameraTraumaEvents

§

impl HasSchema for ClearColor

§

impl HasSchema for CommandQueue

§

impl HasSchema for CurrentSystemStage

§

impl HasSchema for DVec2

§

impl HasSchema for DVec3

§

impl HasSchema for DVec4

§

impl HasSchema for DisconnectedPlayers

§

impl HasSchema for Duration

§

impl HasSchema for EguiCtx

§

impl HasSchema for EguiInputHook

§

impl HasSchema for EguiSettings

§

impl HasSchema for EguiTextures

§

impl HasSchema for Entities

§

impl HasSchema for Entity

§

impl HasSchema for ExitBones

§

impl HasSchema for FluentBundleAsset

§

impl HasSchema for FluentResourceAsset

§

impl HasSchema for Font

§

impl HasSchema for FontMeta

§

impl HasSchema for GamepadAxisEvent

§

impl HasSchema for GamepadButtonEvent

§

impl HasSchema for GamepadConnectionEvent

§

impl HasSchema for GamepadInputs

§

impl HasSchema for GamepadRumbleIntensity

§

impl HasSchema for GamepadsRumble

§

impl HasSchema for IVec2

§

impl HasSchema for IVec3

§

impl HasSchema for IVec4

§

impl HasSchema for KeyboardEvent

§

impl HasSchema for KeyboardInputs

§

impl HasSchema for LocalizationAsset

§

impl HasSchema for LuaEngine

§

impl HasSchema for LuaPlugin

§

impl HasSchema for LuaPlugins

§

impl HasSchema for LuaScript

§

impl HasSchema for MarginMeta

§

impl HasSchema for MouseInputs

§

impl HasSchema for MouseScreenPosition

§

impl HasSchema for MouseWorldPosition

§

impl HasSchema for Path2d

§

impl HasSchema for Quat

§

impl HasSchema for RngGenerator

§

impl HasSchema for RootLocalizationFieldIdx

§

impl HasSchema for SchemaAssetHandle

§

impl HasSchema for SchemaMetaAssetLoader

§

impl HasSchema for SessionOptions

§

impl HasSchema for Sessions

§

impl HasSchema for ShakeNoise

§

impl HasSchema for Sprite

§

impl HasSchema for Storage

§

impl HasSchema for Tile

§

impl HasSchema for TileLayer

§

impl HasSchema for Time

§

impl HasSchema for Timer

§

impl HasSchema for Transform

§

impl HasSchema for UVec2

§

impl HasSchema for UVec3

§

impl HasSchema for UVec4

§

impl HasSchema for UntypedHandle

§

impl HasSchema for Ustr

§

impl HasSchema for Vec2

§

impl HasSchema for Vec3

§

impl HasSchema for Vec4

§

impl HasSchema for Viewport

§

impl HasSchema for Window

§

impl HasSchema for SchemaBox

§

impl HasSchema for SchemaDeserialize

§

impl<K, V> HasSchema for SMap<K, V>
where K: HasSchema, V: HasSchema,

§

impl<T> HasSchema for Maybe<T>
where T: HasSchema + Clone,

§

impl<T> HasSchema for Handle<T>
where T: HasSchema,

§

impl<T> HasSchema for SVec<T>
where T: HasSchema,

§

impl<T> HasSchema for SBox<T>
where T: HasSchema,