Денис
Vladimir
Ты шоли джавы обкурился?
Vladimir
С частично инициализированными классами
Vladimir
Когда обращение к неинициализированному полю бросает исключение
Αλεχ
impl Foo {
pub fn new(a: i32 = 1, b: i32 = 2, c: i32 = 10) -> Self {}
}
Αλεχ
ну например так
Vladimir
Эт частичныц случай перегрузки, вообще не про руст.
Αλεχ
в расте нет перегрузок
Anonymous
Ребят, у меня это
borrowed value does not live long enough
Vladimir
պլհկ
Anonymous
Океюшки
Vladimir
Вообще кстати билдеры через дефолтные структуры, не модно в Русте?
Αλεχ
есть дерайв
պլհկ
Билдеры через дерайв модно
Αλεχ
но оно такое
Vladimir
Ну эт ж нужно методы вызывать, а так всё в одном месте
red75prime
macro_rules!
Αλεχ
Αλεχ
ток это не очень
Денис
чё не очень-то?
Денис
это же прям ровно то, что нужно, нет?
Αλεχ
не очень
Αλεχ
хоят конечно неплохо
Αλεχ
я про него знал
Αλεχ
ну например непонятно, как объявить часть обязательных полей, а часть - нет
Αλεχ
там можно сделать валидацию с паникой, но эт такое
Αλεχ
так-то у тебя build unwrap
Αλεχ
и может быть паника
Αλεχ
с дефолтными параметрами паники точно нет
Αλεχ
ну короч first class citizen всегда удобнее
Αλεχ
я понимаю, что макросы в расте позволяют кучу прикольных штуковин делать
Αλεχ
и решать часть проблем языка
Αλεχ
но лучше бы их завезли, чем сраный try или там поддержку иероглифов в идентификаторах
պլհկ
https://docs.rs/derive_builder/0.5.1/derive_builder/#default-values
Денис
Vladimir
Αλεχ
Αλεχ
тем более, что паттерн билдер работает с созданием структуры
Αλεχ
но не работает с методами foo
Sergey
Αλεχ
Sergey
Αλεχ
можешь посчитать среднюю длину сообщения, она не меньше, чем у всех. Так что столбиками никто и не пишет.
Αλεχ
или все пишут.
Sergey
Sergey
Совсем не столбики
Αλεχ
хм.
Αλεχ
действительно не очень. Сорян
Αλεχ
Денис
как это с билдерами связано?
Αλεχ
билдеры умеют эту проблему решать (кое-как) в случае инициализации. В случае функций оно уже не работает
Anonymous
play.rust-lang.org
http://play.rust-lang.org/?gist=0578c4ab5c48f6d6e562512d53ada7a3&version=stable&mode=debug&edition=2015
Αλεχ
точнее FooArgsBuilder можно сделать, но это чет говнецо
Денис
Αλεχ
Anonymous
Cat
Αλεχ
Αλεχ
պլհկ
что неудобно?
Cat
Αλεχ
foo(a,b, None, None, None, None, 10, None, None)
պլհկ
что уметь
պլհկ
http://play.rust-lang.org/?gist=1662713eb430834dabf923dd128480d4&version=stable&mode=debug&edition=2015
Αλεχ
internal void SpellCheckString()
{
string str = "Speling erors here.";
object ignoreUpperCase = true;
object missingType = Type.Missing;
bool blnSpell = ThisApplication.CheckSpelling(str,
ref missingType, ref ignoreUpperCase, ref missingType,
ref missingType, ref missingType, ref missingType,
ref missingType, ref missingType, ref missingType,
ref missingType, ref missingType, ref missingType);
MessageBox.Show(blnSpell.ToString(), "False if Errors, True if OK");
}
Cat
похоже на петон
Sergey
Cat
Cat
^
Αλεχ
vs
bool blnSpell = ThisApplication.CheckSpelling(str)
Αλεχ
где остальные параметры подставляются по-умолчанию
Αλεχ
согласен, нужно было бы вместо 22 аргументов юзать структуру как параметр, а уже для неё можно билдер
Αλεχ
но есть и промежуточные вариации
Cat