datatype_dup/
datatype_dup.rs1#![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}