Przenoszę niektóre Python do Rust jako ćwiczenie uczenia się i trzeba wprowadzić dane wejściowe z pliku lub stdin. Zachowuję uchwyt do mojego wejścia w strukturze, więc pomyślałem, że zrobię tylko Box<io::Read>
, ale natrafiłem na sytuację, w której muszę szukać na wejściu, a seek
nie jest częścią cechy Read
. Wiem, że nie możesz szukać w rurach, więc idę do przodu i zakładam, że ta metoda jest wywoływana tylko wtedy, gdy dane wejściowe są plikiem, ale moim problemem jest to, że nie mogę sprawdzić tego i zgubić w Rust.Jak mogę pobrać dane wejściowe ze stdin lub pliku, jeśli nie mogę przeszukiwać stdin?
Wiem, że mogę użyć wyliczenia dla dwóch typów danych wejściowych, ale wydaje się, że powinien być bardziej elegancki sposób na to. I to jest moje pytanie, jak to zrobić i nie robić bałaganu?
Czy można owinąć stdin lub plik w tym samym buforze, więc mógłbym po prostu użyć tego typu i nie martwić się o typ IO?
Jakie operacje są potrzebne, aby "wyszukać" dane wejściowe? Jeśli naprawdę potrzebujesz arbitralnego 'seek' jedyną nadzieją jest przeczytanie całego stdin na' Cursor>. –
kennytm
Oczywiście nie musisz ** szukać, jeśli możesz obsłużyć czytanie ze standardowego wejścia. – Shepmaster