rbxm 0.3.0

Reader for Roblox model files
docs.rs failed to build rbxm-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: rbxm-0.2.1


crates.io Documentation MIT/Apache-2 licensed

A reader for Roblox model files, implemented in Rust.


  • Strongly-typed handling of many Roblox instance kinds
  • Feature flags to add support for less stable formats, E.G. CSGPHS Meshes.
  • #[no_std] support, as long as alloc is present


use rbxm::{from_file, SerdeError, ModelError};

fn main() {
    // Read a model from a file
    let model = match from_file("./Model.rbxm") {
        Ok(model) => model,
        Err(SerdeError::IoError(err)) => panic!("IO Error: {}", err),
        Err(err) => panic!("Error parsing model: {}", err),

    // Get a part from a path, this looks for a root node named ModelSection with a child named Part, and returns
    // that child.
    let part = match model.get_path("ModelSection/Part") {
        Ok(part) => part,
        Err(ModelError::NotFound) => panic!("Couldn't find instance at \"ModelSection/Part\""),
        Err(ModelError::AmbiguousPath) => panic!("Found more than one instance matching \"ModelSection/Part\""),
        Err(err) => panic!("Model Error: {}", err),

    println!("Part Class: {}", part.borrow().kind.class_name())


  • Complete instance info documentation
  • XML file support
  • More helper methods on data
  • Instance new methods + #[non_exhaustive] for better future compat
  • Improve parsing modularity, add a low-level API for it maybe


Licensed under either of


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.