datatype_dup/
datatype_dup.rs

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