Size: a a a

Rust — русскоговорящее сообществo

2020 August 19

В

Вафель in Rust — русскоговорящее сообществo
.as_ref не у всех типов есть
источник

V

Vladimir in Rust — русскоговорящее сообществo
Вафель
.as_ref не у всех типов есть
Тогда borrow
источник

В

Вафель in Rust — русскоговорящее сообществo
Vladimir
Тогда borrow
borrow тоже не на всех и вообще другое значит
источник

Э

Эрик in Rust — русскоговорящее сообществo
Vladimir
Тогда borrow
Borrow тем более не у всех.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Многие даже не знают, что такая штука существует.
источник

V

Vladimir in Rust — русскоговорящее сообществo
impl<T> Borrow<T> for T where
    T: ?Sized, 
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вафель
borrow тоже не на всех и вообще другое значит
Одинаковая сигнатура с AsRef, одно и то же.
источник

V

Vladimir in Rust — русскоговорящее сообществo
Скорее у некоторых их больше одного)
источник

В

Вафель in Rust — русскоговорящее сообществo
Эрик
Одинаковая сигнатура с AsRef, одно и то же.
нет. borrow накладывает ограничения на Eq, Ord и Hash
источник

V

Vladimir in Rust — русскоговорящее сообществo
Вафель
borrow тоже не на всех и вообще другое значит
Да, значит другое, но какраз то что нужно. as_ref скорее когда нужно по ссылке поля и тд
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вафель
нет. borrow накладывает ограничения на Eq, Ord и Hash
Нет вроде бы.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Точнее, в доках да, а сам по себе — нет.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Да и какая разница, если ты всё равно получаешь &T, что там, что там.
источник

В

Вафель in Rust — русскоговорящее сообществo
Эрик
Точнее, в доках да, а сам по себе — нет.
Ну понятно что раст недостаточно силён чтобы это доказать, но несоблюдение этого ни к чему хорошему не приведёт
источник

В

Вафель in Rust — русскоговорящее сообществo
Vladimir
impl<T> Borrow<T> for T where
    T: ?Sized, 
Oh, да, точно. Но тут проблема что типы могут не вывестись
источник

is

ilya sheprut in Rust — русскоговорящее сообществo
ilya sheprut
Как думаете, эта штука стоит добавления в std? Немного начинает Haskell напоминать.

Ещё в ссылках есть метод also, тоже аналогичный и полезный.

Apply пример
Метод also, also_deref
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
ilya sheprut
Как думаете, эта штука стоит добавления в std? Немного начинает Haskell напоминать.

Ещё в ссылках есть метод also, тоже аналогичный и полезный.

Apply пример
Метод also, also_deref
trait Apply {
   fn apply<R, F: FnOnce(T) -> R>(self, f: F) { f(self) }
}

impl Apply for T { }

?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
А, там ссылка есть. Да.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
apply_ref и apply_mut могут не требовать Sized, не?
источник

is

ilya sheprut in Rust — русскоговорящее сообществo
Emmanuel Goldstein
apply_ref и apply_mut могут не требовать Sized, не?
да, в ссылке на реализацию в internals не требуют (спасибо @WaffleLapkin)
источник