1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//! # Rust bindings for the Godot game engine //! //! This crate contains high-level wrappers around the core types of Godot Engine's GDNative //! API, and the NativeScript feature which enables Rust code to be used as scripts. //! //! ## Memory management for core types //! //! Wrappers for most core types expose safe Rust interfaces, and it's unnecessary to mind //! memory management most of the times. The exceptions are `VariantArray` and `Dictionary`, //! internally reference-counted collections with "interior mutability" in Rust parlance. These //! types are modelled using the "typestate" pattern to enforce that the official //! [thread-safety guidelines][thread-safety]. For more information, read the type-level //! documentation for these types. //! //! Since it is easy to expect containers and other types to allocate a copy of their //! content when using the `Clone` trait, some types do not implement `Clone` and instead //! implement [`NewRef`](./trait.NewRef.html) which provides a `new_ref(&self) -> Self` method //! to create references to the same collection or object. //! //! [thread-safety]: https://docs.godotengine.org/en/stable/tutorials/threads/thread_safe_apis.html #![deny(clippy::missing_inline_in_public_items)] #![allow(clippy::transmute_ptr_to_ptr)] #![cfg_attr(feature = "gd_test", allow(clippy::blacklisted_name))] #[doc(hidden)] pub extern crate gdnative_sys as sys; #[doc(hidden)] pub extern crate libc; #[cfg(feature = "gd_test")] #[macro_use] extern crate approx; // Macros have to be processed before they are used. mod macros; pub mod core_types; mod init; #[cfg(feature = "nativescript")] pub mod nativescript; mod new_ref; pub mod object; pub mod ref_kind; pub mod thread_access; /// Internal low-level API for use by macros and generated bindings. Not a part of the public API. #[doc(hidden)] pub mod private; // // Re-exports // pub use init::{InitializeInfo, TerminateInfo}; pub use new_ref::NewRef; pub use object::{GodotObject, Null, Ref, TRef}; pub type GodotResult = Result<(), core_types::error::GodotError>;