pub struct RoleId(/* private fields */);Expand description
A validated, nonzero numeric region role.
Implementations§
Source§impl RoleId
impl RoleId
Sourcepub const fn new(value: u32) -> Option<Self>
pub const fn new(value: u32) -> Option<Self>
Creates a role, rejecting the reserved zero value.
Examples found in repository?
examples/checked_layout.rs (line 8)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let requests = RoleId::new(1).expect("nonzero role");
9 let responses = RoleId::new(2).expect("nonzero role");
10 let regions = [
11 RegionSpec {
12 role: requests,
13 writer: Endpoint::Initiator,
14 slot_count: 1,
15 payload_bytes: 256,
16 acknowledgement_count: 1,
17 },
18 RegionSpec {
19 role: responses,
20 writer: Endpoint::Responder,
21 slot_count: 1,
22 payload_bytes: 256,
23 acknowledgement_count: 1,
24 },
25 ];
26 let routes = [
27 AcknowledgementRouteSpec {
28 owner: responses,
29 target: requests,
30 slot_index: 0,
31 cell_index: 0,
32 },
33 AcknowledgementRouteSpec {
34 owner: requests,
35 target: responses,
36 slot_index: 0,
37 cell_index: 0,
38 },
39 ];
40 let limits = LayoutLimits {
41 maximum_mapping_size: 64 * 1024,
42 maximum_slot_count: 8,
43 maximum_acknowledgement_count: 8,
44 maximum_payload_bytes: 4096,
45 };
46
47 let topology = RegionSetLayout::calculate([0x52; 32], 1, ®ions, &routes, limits)?;
48 for region in topology.regions() {
49 println!(
50 "role={} writer={:?} mapping={} bytes",
51 region.role().get(),
52 region.writer(),
53 region.total_size()
54 );
55 }
56 Ok(())
57}Sourcepub const fn get(self) -> u32
pub const fn get(self) -> u32
Returns the fixed-width wire value.
Examples found in repository?
examples/checked_layout.rs (line 51)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let requests = RoleId::new(1).expect("nonzero role");
9 let responses = RoleId::new(2).expect("nonzero role");
10 let regions = [
11 RegionSpec {
12 role: requests,
13 writer: Endpoint::Initiator,
14 slot_count: 1,
15 payload_bytes: 256,
16 acknowledgement_count: 1,
17 },
18 RegionSpec {
19 role: responses,
20 writer: Endpoint::Responder,
21 slot_count: 1,
22 payload_bytes: 256,
23 acknowledgement_count: 1,
24 },
25 ];
26 let routes = [
27 AcknowledgementRouteSpec {
28 owner: responses,
29 target: requests,
30 slot_index: 0,
31 cell_index: 0,
32 },
33 AcknowledgementRouteSpec {
34 owner: requests,
35 target: responses,
36 slot_index: 0,
37 cell_index: 0,
38 },
39 ];
40 let limits = LayoutLimits {
41 maximum_mapping_size: 64 * 1024,
42 maximum_slot_count: 8,
43 maximum_acknowledgement_count: 8,
44 maximum_payload_bytes: 4096,
45 };
46
47 let topology = RegionSetLayout::calculate([0x52; 32], 1, ®ions, &routes, limits)?;
48 for region in topology.regions() {
49 println!(
50 "role={} writer={:?} mapping={} bytes",
51 region.role().get(),
52 region.writer(),
53 region.total_size()
54 );
55 }
56 Ok(())
57}Trait Implementations§
impl Copy for RoleId
impl Eq for RoleId
impl StructuralPartialEq for RoleId
Auto Trait Implementations§
impl Freeze for RoleId
impl RefUnwindSafe for RoleId
impl Send for RoleId
impl Sync for RoleId
impl Unpin for RoleId
impl UnsafeUnpin for RoleId
impl UnwindSafe for RoleId
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