По причине производительности имеет смысл, и это также то, что я подозреваю больше всего :)
рта характера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), и я читаю второе издание после прочтения большей части первого издания. Пожалуйста, исправьте меня, если приведенный выше код содержит какие-либо ошибки (особенно когда речь идет о времени жизни).Строго говоря,