pub struct Rerouter;Implementations§
Source§impl Rerouter
impl Rerouter
pub const INPUT: BString
pub const OUTPUT: BString
pub const COMPONENT: BString
pub const fn brick(&self) -> BrickType
Sourcepub const fn input_of(brick_id: usize) -> WirePort
pub const fn input_of(brick_id: usize) -> WirePort
Examples found in repository?
examples/write_wire.rs (line 36)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let path = PathBuf::from("./example_wire.brdb");
7
8 // Ensures the memory db can be created without errors
9 let db = Brdb::new(&path)?.into_reader();
10 let mut world = World::new();
11 // Register the built-in component type/struct mappings so the gate and
12 // rerouter component types resolve when writing.
13 world.register_all_components();
14 world.meta.bundle.description = "Example World".to_string();
15
16 let (a, a_id) = Brick {
17 position: (0, 0, 1).into(),
18 color: (255, 0, 0).into(),
19 asset: assets::bricks::B_REROUTE,
20 ..Default::default()
21 }
22 .with_component(assets::components::Rerouter)
23 .with_id_split();
24 let (b, b_id) = Brick {
25 position: (15, 0, 1).into(),
26 color: (255, 0, 0).into(),
27 asset: assets::components::LogicGate::BoolNot.brick(),
28 ..Default::default()
29 }
30 .with_component(assets::components::LogicGate::BoolNot.component())
31 .with_id_split();
32
33 world.add_bricks([a, b]);
34 world.add_wire_connection(
35 assets::components::LogicGate::BoolNot.output_of(b_id),
36 assets::components::Rerouter::input_of(a_id),
37 );
38
39 db.save("example world", &world)?;
40
41 println!("{}", db.get_fs()?.render());
42
43 Ok(())
44}More examples
examples/write_fixtures.rs (line 199)
157fn wires_world() -> World {
158 // Mirror of examples/write_wire.rs (single grid, single chunk — fully
159 // deterministic), extended to 3 bricks/2 wires: a boolean NOT gate feeds
160 // one input of an AND gate, whose output feeds a rerouter.
161 let mut world = World::new();
162 world.register_all_components();
163 world.meta.bundle.description = "Wire fixture".to_string();
164
165 let (a, a_id) = Brick {
166 position: (30, 0, 1).into(),
167 color: (255, 0, 0).into(),
168 asset: assets::bricks::B_REROUTE,
169 ..Default::default()
170 }
171 .with_component(assets::components::Rerouter)
172 .with_id_split();
173 let (b, b_id) = Brick {
174 position: (15, 0, 1).into(),
175 color: (0, 255, 0).into(),
176 asset: assets::components::LogicGate::BoolAnd.brick(),
177 ..Default::default()
178 }
179 .with_component(assets::components::LogicGate::BoolAnd.component())
180 .with_id_split();
181 let (c, c_id) = Brick {
182 position: (0, 0, 1).into(),
183 color: (0, 0, 255).into(),
184 asset: assets::components::LogicGate::BoolNot.brick(),
185 ..Default::default()
186 }
187 .with_component(assets::components::LogicGate::BoolNot.component())
188 .with_id_split();
189
190 world.add_bricks([a, b, c]);
191 // Wire 1: NOT.output -> AND.inputA
192 world.add_wire_connection(
193 assets::components::LogicGate::BoolNot.output_of(c_id),
194 assets::components::LogicGate::BoolAnd.input_a_of(b_id),
195 );
196 // Wire 2: AND.output -> Rerouter.input
197 world.add_wire_connection(
198 assets::components::LogicGate::BoolAnd.output_of(b_id),
199 assets::components::Rerouter::input_of(a_id),
200 );
201
202 world
203}pub const fn output_of(brick_id: usize) -> WirePort
Trait Implementations§
Source§impl AsBrdbValue for Rerouter
impl AsBrdbValue for Rerouter
fn as_brdb_bool(&self) -> Result<bool, BrdbSchemaError>
fn as_brdb_u8(&self) -> Result<u8, BrdbSchemaError>
fn as_brdb_u16(&self) -> Result<u16, BrdbSchemaError>
fn as_brdb_u32(&self) -> Result<u32, BrdbSchemaError>
fn as_brdb_u64(&self) -> Result<u64, BrdbSchemaError>
fn as_brdb_i8(&self) -> Result<i8, BrdbSchemaError>
fn as_brdb_i16(&self) -> Result<i16, BrdbSchemaError>
fn as_brdb_i32(&self) -> Result<i32, BrdbSchemaError>
fn as_brdb_i64(&self) -> Result<i64, BrdbSchemaError>
fn as_brdb_f32(&self) -> Result<f32, BrdbSchemaError>
fn as_brdb_f64(&self) -> Result<f64, BrdbSchemaError>
fn as_brdb_str(&self) -> Result<&str, BrdbSchemaError>
fn as_brdb_asset( &self, _schema: &BrdbSchema, _ty: &str, ) -> Result<Option<usize>, BrdbSchemaError>
fn as_brdb_enum( &self, _schema: &BrdbSchema, _def: &BrdbSchemaEnum, ) -> Result<i32, BrdbSchemaError>
fn as_brdb_wire_variant(&self) -> Result<WireVariant, BrdbSchemaError>
fn as_brdb_wire_array_variant( &self, ) -> Result<WireArrayVariant, BrdbSchemaError>
fn as_brdb_wire_map_variant(&self) -> Result<WireMapVariant, BrdbSchemaError>
Source§fn as_brdb_variant_member(&self) -> Option<&str>
fn as_brdb_variant_member(&self) -> Option<&str>
When this value should encode as a named member of a schema
variant
(a tagged union whose members are structs, e.g. BRInventoryEntryVariant
-> BRInventoryEntryNothing), return the member struct’s name. The
writer emits uint(tag) + <that struct>. None (the default) means
“not a struct-member variant” and the writer falls back to the wire
map/array/scalar variant paths.Source§fn has_brdb_struct_prop(
&self,
_schema: &BrdbSchema,
_struct_name: BrdbInterned,
_prop_name: BrdbInterned,
) -> bool
fn has_brdb_struct_prop( &self, _schema: &BrdbSchema, _struct_name: BrdbInterned, _prop_name: BrdbInterned, ) -> bool
Cheap presence probe for a struct property. When this returns
false, the schema writer takes the default/zero path directly
instead of paying for a MissingStructField error (two String
allocations) per unset field. Implementations that can’t answer
cheaply keep the default true; the writer then falls back to
the erroring accessors below.Source§fn as_brdb_struct_prop_value(
&self,
_schema: &BrdbSchema,
_struct_name: BrdbInterned,
_prop_name: BrdbInterned,
) -> Result<&dyn AsBrdbValue, BrdbSchemaError>
fn as_brdb_struct_prop_value( &self, _schema: &BrdbSchema, _struct_name: BrdbInterned, _prop_name: BrdbInterned, ) -> Result<&dyn AsBrdbValue, BrdbSchemaError>
Read a specific struct property value from the schema.
Source§fn as_brdb_struct_prop_array(
&self,
_schema: &BrdbSchema,
_struct_name: BrdbInterned,
_prop_name: BrdbInterned,
) -> Result<BrdbArrayIter<'_>, BrdbSchemaError>
fn as_brdb_struct_prop_array( &self, _schema: &BrdbSchema, _struct_name: BrdbInterned, _prop_name: BrdbInterned, ) -> Result<BrdbArrayIter<'_>, BrdbSchemaError>
Get the the number of entries in a struct property.
Source§fn as_brdb_struct_prop_map(
&self,
_schema: &BrdbSchema,
_struct_name: BrdbInterned,
_prop_name: BrdbInterned,
) -> Result<BrdbMapIter<'_>, BrdbSchemaError>
fn as_brdb_struct_prop_map( &self, _schema: &BrdbSchema, _struct_name: BrdbInterned, _prop_name: BrdbInterned, ) -> Result<BrdbMapIter<'_>, BrdbSchemaError>
Get the the number of entries in a struct property.
Source§impl BrdbComponent for Rerouter
impl BrdbComponent for Rerouter
Source§fn component_type(&self) -> Option<BString>
fn component_type(&self) -> Option<BString>
The component type name (e.g.
"BrickComponentType_WireGraph_Expr_Add").
All other metadata (struct name, schema, wire ports, external assets) is
resolved from the ComponentLibrary on World.impl Copy for Rerouter
Auto Trait Implementations§
impl Freeze for Rerouter
impl RefUnwindSafe for Rerouter
impl Send for Rerouter
impl Sync for Rerouter
impl Unpin for Rerouter
impl UnsafeUnpin for Rerouter
impl UnwindSafe for Rerouter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more