2014-09-19 2 views
8

следующие работы кода, и я не знаю, почему:Почему я могу вызвать File :: open (...). Read_to_end()?

File::open(&some_path).read_to_end().unwrap(); 

Глядя на API Docs, я могу видеть File::open() возвращающая IoResult, не имеют read_to_end().

Есть ли какой-то синтаксический сахар? Result<T, Error> как-то превращается в Result<U, Error>?

Документация: http://doc.rust-lang.org/std/io/fs/struct.File.html#method.read_to_end

ответ

6

read_to_end происходит от Reader признака, и если вы посмотрите там вы можете увидеть, что there является реализацией для считывателя IoResult<R> для любого R, который реализует Reader:

impl<R: Reader> Reader for IoResult<R> 
+1

кажется документация не говорит мне, что «IoResult» реализует черту ... нормально! Принятие через 5 минут. –