datatype_dup/
datatype_dup.rs

1#![deny(warnings)]
2
3use mpi::datatype::DynBufferMut;
4use mpi::traits::*;
5
6fn main() {
7    let universe = mpi::initialize().unwrap();
8    let world = universe.world();
9
10    let root_process = world.process_at_rank(0);
11
12    let int_type = i32::equivalent_datatype().dup();
13
14    let mut ints = if world.rank() == 0 {
15        [1i32, 2, 3, 4]
16    } else {
17        [0, 0, 0, 0]
18    };
19
20    let mut buffer =
21        unsafe { DynBufferMut::from_raw(ints.as_mut_ptr(), ints.count(), int_type.as_ref()) };
22
23    root_process.broadcast_into(&mut buffer);
24
25    assert_eq!([1, 2, 3, 4], ints);
26}