Там нет ни одного благословенный способ сделать межпроцессное общение в Rust. Вам нужно будет использовать любую технологию, которую вы хотите: трубы, голые сокеты (TCP или UDP), общая память, nanomsg/ZeroMQ, что угодно.
Также Send
не означает, что вы можете сериализовать объект типа, который его реализует, и отправить его другому процессу. Это означает, что данные могут быть безопасно отправлены на другой поток (например, он не содержит ссылок в стек исходного потока) и не связан с сериализацией.
Например, одной из основных форм IPC являются трубы stdin/stdout между родительскими и дочерними процессами. Process
API позволяет отправлять и принимать данные через эти трубы:
use std::io::process::Command;
fn main() {
let mut p = Command::new("tr").arg("a-z").arg("A-Z").spawn().unwrap();
{
let mut p_stdin = p.stdin.as_mut().unwrap();
p_stdin.write_str("hello world").unwrap();
}
p.wait().unwrap().success();
let response = p.stdout.as_mut().unwrap().read_to_string().unwrap();
println!("Responded: {}", response);
}
Или вы можете использовать сокеты, но пример будет довольно большим. Вы можете найти документацию для сокетов API here.
Доступны сокеты TCP и UDP, которые, на мой взгляд, позволяют осуществлять связь между процессами. Или вы имеете в виду определенный тип IPC? Может быть, есть что-то существующее, с которым вы хотите взаимодействовать? Есть ли примеры IPC, которые вы имеете в виду? – Shepmaster