Cuno
Абстрактного, в ваккуме
Cuno
который без кучи геттеров не обходится
Anton
По логике, переменные должны жить, пока они используются, в расте же до конца блока. И вроде бы логично в случае return делать туда goto и вызывать drop, а одновременно это нелогично.
Anton
пример чего?
Маjко
То как ты скинул код — читать невозможно
Маjко
Минимализуй пример и кинь на плейграунд
Vladimir
у тебя селф в замыкание пробрасывается
Vladimir
вот и бороуинг селфа
Vladimir
а вдруг зомыкание будет жить вечно
Matwey
/me поет и пляшет "замыкание будет вечным, если я замению батарейки если я за ме ню ба та рей ки"
պլհկ
переменные должны жить, пока они используются
պլհկ
хуйня ваш раст
Matwey
goto не нужно, есть же Drop
Loo
ебучий борроу чекер
Vladimir
пиздос
Vladimir
вот жили в си
Loo
напридумали хуйни чтобы на нормальных языках не писать
Vladimir
там переменные живут пока живут
Anton
Пример https://play.rust-lang.org/?gist=0d4d632d0f4d3d9b135e377b496d6ec3&version=stable
Loo
и я хочу менять поля в ней как угодно
Loo
к чему это всё
Сережа
Сережа
контрибутор
doc
и я хочу менять поля в ней как угодно
множество вариантов "кау-богу-угодно" не мапится на множество вариантов "безопасно".
doc
есть си, там можно все
Сережа
это просто боро чекер ваш жопой слеплен
Vladimir
Nick Cameron nrc Research engineer at Mozilla. I hack on @rust-lang.
он теперь ничего не официального не может делать?
big
контрибутор
да, я в теме ) от этого не смищно не становится
Loo
множество вариантов "кау-богу-угодно" не мапится на множество вариантов "безопасно".
да какой безопасно. ваш раст только создает иллюзию безопасности - всё решается ансейфом. язык просто убог
Cuno
Пример https://play.rust-lang.org/?gist=0d4d632d0f4d3d9b135e377b496d6ec3&version=stable
В чем проблема написать так? https://play.rust-lang.org/?gist=b56c2230f0280cf1f156a2674ac56133&version=stable
Сережа
Сережа
у кого есть такие смайлики????
Anton
напомню, ты юзаешь геттеры чтобы добраться до полей в трейте. ты тык сделать не можешь. =)
Anton
В чем проблема написать так? https://play.rust-lang.org/?gist=b56c2230f0280cf1f156a2674ac56133&version=stable
Cuno
окей, пили пример с трейтами тогда.
Сережа
сделать трейт get_A и в твоем трейте на него делать ограничение!
Сережа
элегантно!
Anton
ок
Anton
https://play.rust-lang.org/?gist=81cffeba68d0d216b511b919ca6b3d26&version=stable
Vladimir
ты не правильно готовишь трейты
Vladimir
нужно думать тем что этот трейт выполняет, а не то что внутри него находится
Vladimir
так никакой человек в здравом уме не пишет
Anton
да? у меня есть 7 серверов, крайне схожих, поэтому есть трейт Server.. удачи
Сережа
тебе нужно ишью в репе на гитхабе создать про это!
Anton
Раст вроде первый язык с борров чекером. И вроде все хорошо, когда мы юзаем всякие i32, и без классов жить легко, и логично, а на деле вылезает много острых подводных камней. Либо еще борров чеккер может заставить тебя выносить из блоков кода, копировать и тд, тем самым только уменьшая логичность и читабельность. Хорошо, что в расте хоть можно match self.field { Some(ref mut field) => do ref mut field @ None => *field=Some(..) } Хотя для этого кажись функция была некая.
Anton
сколько сарказма
Anton
да какой безопасно. ваш раст только создает иллюзию безопасности - всё решается ансейфом. язык просто убог
Anton
тебе нужно ишью в репе на гитхабе создать про это!
Cuno
https://play.rust-lang.org/?gist=81cffeba68d0d216b511b919ca6b3d26&version=stable
@c_vld правильно пишет. Ты пытаешься приготовить ООП в языке без ООП. Один из вариантов решения: https://play.rust-lang.org/?gist=65f2490c6e78586ce39add22e0dab24a&version=stable
Сережа
вроде бы там циклон был с боро чекером, но Роб Пайк как мудрый человек от этого всего отказался и сделал язык с гц
Anton
Ну вообще-то ООП во многом верно. Ну структуры, поля, это же логично. А вот наследование да, кривая штука, композиция лучше, правда в расте она крайне неудобная из-за тысяч геттеров и сеттеров. Уход от такого "простого" ООП просто неразумен, я даже не представляю, как можно, например, сделать текстуры/буферы и работу с ними без ООП и тем более на функциональщине(сам потому не шибко её знаю) Твой вариант не универсален. А если у нас 5 полей, будем добавлять get_ab get_abc и тд? Просто криво =)
Alexander
структуры и поля были задолго до ООП, при чем тут ООП?
Alexander
в чем проблема с буфферами и функциональщиной?
Cuno
Но если у тебя 5 или больше геттеров в трейте, то определенно дизайн не очень.
Anton
знаю, но мне же намекают, что как бэ это неправильно, и надо вместо Struct+Implementation делать хз что.
Anton
структуры и поля были задолго до ООП, при чем тут ООП?
Anton
тогда зачем структуры с синтаксисом s.a вообще? можно было бы как в луа без классов обойтись(там только массивы)
Anton
Нет, один get_abcde. Можно же дропать ненужные ссылки.
Alexander
Struct+Implementation это ad-hoc полиморфизм, к ООП (subtype polymorphism) имеет отношение весьма далекое
Alexander
какое отношение синтаксис c.a имеет к классам?!
Alexander
что ж за день сегодня
Anton
ИМХО, GC это кривая штука. GC лишь обходит проблему, но не решает её. Например, в жабе нужно закрывать файлы вручную, а если тровишь эксепшн, когда мутекс открыт, то.. он и не закрывается. Ну во всяком случае, как я слышал(жабу я потому и не юзаю). RAII куда логичнее. Например, раст закрывает файлы и отравляет мутексы. Второе очень полезно для написания чего-то живучего.
Alexander
c.a очень часто просто сахар для a(c)
Alexander
....
Маjко
Как бы