2

win8 で Rust 0.8 を使用して次のテスト プログラム (以下) を実行する場合、プログラムの 2 つのインスタンスを同時に実行すると、最初のプログラムが入力を待機しているときに (12 行目)、2 番目のプログラムが致命的なエラーで中止されます (7 行目)。以下のメッセージ。

致命的なエラーを防ぐには、match ステートメントを使用する必要があると思いますが、型システムとそれに使用する match についてはまだ十分にわかっていませんが、試してみました。

この状況で、以下のプログラムを中止するのではなく、正常に失敗させるにはどうすればよいですか?

テストプログラムの例:

001  use std::cell::Cell;
002  use std::rt::io::{Writer, Listener, Acceptor};
003  use std::rt::io::net::tcp::TcpListener;
004  use std::rt::io::net::ip::{SocketAddr, Ipv4Addr};
005
006  fn main() {
007      let res_tcp_acceptor = TcpListener::bind(SocketAddr { ip: Ipv4Addr(127, 0, 0, 1),
008                                                          port: 9876}).listen();
009   
010      print("Connected OK. Start Listening? (y/n)  : ");
011
012      let s_input: ~str = std::io::stdin().read_line();  
013
014      if s_input == ~"y" {

プログラムの 2 番目のインスタンスによって表示される致命的なエラー:

task <unnamed> failed at 'assertion failed: `(left == right) && (right == left)`
 (left: `0i32`, right: `-4092i32`)', C:\bot\slave\dist2-win\build\src\libstd\rt\
uv\net.rs:302
4

1 に答える 1