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