RUST 与 C 之间数据交换的实现

在项目中遇到一个数据获取的问题。
采用Rust & C 编写, 通过FFI 实现交互,在打通两者之后,发现了一个问题。
在Rust 端, 用Vec 的形式保存了大量的数据。 由于写文件的速度较慢,只能转到C 端处理。
通过获取该vector 地址的ptr, 过ffi 传给C后, 通过该地址去访问。获取的数据不是预期的数据,显示的都是异常的值。

Rust code:

   let a = format!("{:?}", prover.a.as_ptr());
        let a_1 = &a.as_bytes();
       info!("a: value:{:?}\n",ax);
        let b = format!("{:?}", prover.b.as_ptr());
        let b_1 = &b.as_bytes();
        let c = format!("{:?}", prover.c.as_ptr());
        let c_1 = &c.as_bytes();
        let aux = format!("{:?}", prover.aux_assignment.as_ptr());
        let aux_1 = &aux.as_bytes();
        let input = format!("{:?}", prover.input_assignment.as_ptr());
        let input_1 = &input.as_bytes();

        rust_init_prove(
            a_1.as_ptr(), prover.a.len(),
            b_1.as_ptr(), prover.b.len(), 
            c_1.as_ptr(), prover.c.len(),
            aux_1.as_ptr(), prover.aux_assignment.len(),
            input_1.as_ptr(), prover.input_assignment.len());
        info!("Set info !indes:{:?} Finish!\n",ix);

C code:


 Scalar data = *(Scalar *)(provers[i].a_path );
       for(int t = 0 ; t < 4; t++)
      {
      // printf("Data: index:%d. 0x%08x\n",t, data.fr.l[t]);
        printf("Data: index:%d. 0x%016lx\n",t, data.fr.l[t]);
        fflush(stdout);
      }
      printf("Data: 0x%016lx\n",data.fr);
       fflush(stdout);

有什么合理的方式,能让C 获取rust vector 保存的数据吗

写文件慢,换SSD硬盘或RamDisk不香吗?

每秒10G Bytes
根本就不存在带宽这么大的总线和存储介质