По причине производительности имеет смысл, и это также то, что я подозреваю больше всего :)

рта характераReadмногие функции / методы занимают в качестве (одного из) параметров и возвратаbuf: &mut XXX, Например,Result<usize> принимаетread_to_string() как один из параметров и возвращаетbuf: &mut StringПоскольку я пришел со многих языков, так называемыеResult<usize>.

современный обычно возвращают строку для вызов функции. Дизайнread_string() черта в Rust отчасти шокирует меня, потому что это неReadвернуть строка, а точнеепередает его в качестве параметра (похоже на C или другие более примитивные языки).Я знаю возвращаемое значение (

) используется, чтобы указать, было ли чтение успешным или нет, и его можно передатьResult выражения. (Я изучил Lisp и Go ранее, поэтому я не ставлю под сомнение этот вид дизайна.)matchПочему разработчики ядра не разработали эту черту как «возвращение строки вместе с сообщением об ошибке»?

Например, почему бы не оформить это так:

fn read(&mut self) -> Result<String> { ... }

 также содержит длину, поэтому пользователь может получить доступ к длине, вызвавString при необходимости. Пользователь может объединить его с любым другим.len() если он (а) желает, но ключевой момент заключается в том, что нет необходимости создавать / иметь его перед вызовом этой функции.StringЕсть ли какие-то особые причины для создания этой черты, такой, какая она есть сейчас?

постскриптум Я все еще изучаю Rust (следуя

Язык программирования Rust), и я читаю второе издание после прочтения большей части первого издания. Пожалуйста, исправьте меня, если приведенный выше код содержит какие-либо ошибки (особенно когда речь идет о времени жизни).Строго говоря,

Ответы на вопрос(2)

Ваш ответ на вопрос