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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*!
Implementation of Roblox's binary model (rbxm) and place (rbxl) file formats.
# Examples
## Read a model file
To read a model or place file using rbx_binary's default settings, use
[`from_reader`]. The [`Deserializer`] API exposes additional configuration
options.
```no_run
use std::fs::File;
use std::io::BufReader;
// Using buffered I/O is recommended with rbx_binary
let input = BufReader::new(File::open("MyModel.rbxm")?);
let dom = rbx_binary::from_reader(input)?;
// rbx_binary always returns a DOM with a DataModel at the top level.
// To get to the instances from our file, we need to go one level deeper.
println!("Root instances in file:");
for &referent in dom.root().children() {
let instance = dom.get_by_ref(referent).unwrap();
println!("- {}", instance.name);
}
# Ok::<(), Box<dyn std::error::Error>>(())
```
## Write a model file
To write a model or place file using rbx_binary's default settings, use
[`to_writer`]. The [`Serializer`] API exposes additional configuration options.
```no_run
use std::fs::File;
use std::io::BufWriter;
use rbx_dom_weak::{InstanceBuilder, WeakDom};
let dom = WeakDom::new(InstanceBuilder::new("Folder"));
// Using buffered I/O is recommended with rbx_binary
let output = BufWriter::new(File::create("PlainFolder.rbxm")?);
rbx_binary::to_writer(output, &dom, &[dom.root_ref()])?;
# Ok::<(), Box<dyn std::error::Error>>(())
```
*/
use ;
use ;
/// An unstable textual format that can be used to debug binary models.
pub use crate::;
/// Deserialize a Roblox binary model or place from a stream.
/// Serializes a subset of the given DOM to a binary format model or place,
/// writing to something that implements the `std::io::Write` trait.