Αλεχ
@jeizsm тогда строка заканчивается через ptr+len байт
Антон
Народ, есть такой кот: let r_2 = r * r; let in_circle = |x, y| x*x + y*y <= r_2; let in_octal = (1..r) .take_while(|&y| in_circle(y, y)) .map(|y| { (1..y) .take_while(|&x| in_circle(x, y)) .fold(0, |acc, _| acc + 1) }) .fold(0, |acc, _| acc + 1); Он работает, но если чуток переправить: // Выше те же определения let in_octal = (1..r) .take_while(|&y| in_circle(y, y)) .flat_map(move |y| { (1..y) .take_while(|&x| in_circle(x, y)) }) .fold(0, |acc, _| acc + 1); ...то уже не работает. Не понимаю, как исправить? И надо ли?
Sergey
и компилятор в голову не у всех встроен
Αλεχ
https://play.rust-lang.org/?gist=8105b15bc1cda8cc2cbc58cae563f4af&version=stable&mode=debug&edition=2015
Αλεχ
просто ссылка на пример
Αλεχ
почему не работает - хз
Αλεχ
чет странное
Sergey
компилятор же рассказывает
Αλεχ
что он рассказывает?
Αλεχ
я вот не понимаю что ему не нравится тут
Αλεχ
что где борровится?
Αλεχ
тем более что x - copy type, bool - тоже
Sergey
ты же там ссылками оперируешь
Αλεχ
Короче так работает: let in_octal = (1..r) .take_while(|&y| in_circle(y, y)) .flat_map(|y| { (1..y) .take_while(|&x| in_circle(x, y)).collect::<Vec<_>>() }) .fold(0, |acc, _| acc + 1);
Αλεχ
но нужно без коллекта
Денис
но там же первый вариант без коллекта
-__-
но нужно без коллекта
Не в том замыкании мувишь https://play.rust-lang.org/?gist=b1511189b3a9eb3cc7f2f628b78dc1d1&version=stable&mode=debug&edition=2015
Αλεχ
короче первое правило борровинга с копи - ставь мувы везде, а там разберешься
Αλεχ
не видал что там еще одна лямбда)
-__-
Но вообще это тупо, да. Работаешь с каким-нибудь i32, и постоянно надо думать, по ссылке или по значению, мувить/не мувить.
Sergey
не надо писать сообщения столбиками!
Αλεχ
Спасибо. Но выглядит действительно странно
ничего странного - лямбда должна быть валидна после выхода из скоупа
Αλεχ
если уберешь ленивость и добавишь Collect - то все будет тоже работать
Αλεχ
все логично короч
Αλεχ
пора спать
Денис
А можно чуть подробнее? А то я не въезжаю
у тебя лямбда борроуит игрек на каждом шагу, и, соответственно, она создаёт итератор, который борроуит игрек
Денис
https://play.rust-lang.org/?gist=60a7f5e53948d4354b61d5f76a747e10&version=stable&mode=debug&edition=2015 а с мувом всё валидируется — https://play.rust-lang.org/?gist=5e9c69e720006bb23511c630dc67267e&version=stable&mode=debug&edition=2015 то есть без мува лайфтайм итератора ограничен лайфтаймом игрека если не злоупотреблять лямбдами, то ваще норм получается — https://play.rust-lang.org/?gist=8a8d37363b60acc9b7c62d6fa4b512a5&version=stable&mode=debug&edition=2015 и если бы в find_border ты забыл написать move, то компилятор тебе бы прямо на это указал: help: to force the closure to take ownership of check (and any other referenced variables), use the move keyword
Dmitry
Посоны, а как в diesel бд сделать ? Руками sql писать ? Нету ничего что сделает за тебя ?
Kerrigan
Посоны, а как в diesel бд сделать ? Руками sql писать ? Нету ничего что сделает за тебя ?
напиши миграции в sql, он сам сгенерит схему на макросах
Dmitry
т.е руками придется sql писать в миграциях ?
Kerrigan
да
Kerrigan
и так более правильно
Αλεχ
а дизель умеет в code first?
Kerrigan
что это?
Kerrigan
а как сгенерить схему ?
сам сгенерит при миграции
Aleksey
diesel print-schema еще есть
Kerrigan
не сделал
вот хз, у меня сам сгенерил diesel.toml и в src файлик создал
Dmitry
тоже пусто
Kerrigan
вейт, ты diesel-cli вообще поставил?
Dmitry
при diesel migration run ?
Dmitry
да все есь
Kerrigan
но
Αλεχ
что это?
это когда SQL генерируется из описания типов на расте
Kerrigan
сначала надо сделать diesel setup вроде
Αλεχ
ну то есть ты написал struct Foo { bars: Vec<Bar> }
Kerrigan
это когда SQL генерируется из описания типов на расте
нагенерят себе sql из типов, а потом схему руками переписывай
Αλεχ
и выполнил не знаю cargo generate-db
Αλεχ
и он сделал 2 таблички и FK
Dmitry
сначала надо сделать diesel setup вроде
есть. все сгенерил. Но схема пусто
Αλεχ
нагенерят себе sql из типов, а потом схему руками переписывай
не надо схему руками переписывать, все само работать должно
Kerrigan
не надо схему руками переписывать, все само работать должно
палю: может быть больше одного языка в проекте
Dmitry
и миграции нету. Ошибок нету. И таблици нету
Kerrigan
это чет хреновое
это нормальная ситуация
Αλεχ
прямой доступ в БД должен быть у 1 сервиса
Αλεχ
остальные через него лазят
Kerrigan
давайте не сраться здесь про микросервисы, это в растжерк плз
Αλεχ
я не про микросвервисы
Kerrigan
всё равно в растжерк
Αλεχ
но серьезно, в БД доступ сразу у 2 приложений это что-то неправильное
Loyd
http://microservices.io/patterns/data/shared-database.html
Αλεχ
да я понял что вы так делаете, но у меня ни на одном проекте такой беды не бывало. Обычно 1 БД на приложение. И нет, это не микросервис, микросервис с БД на 20 таблиц не бывает
Kerrigan
если у тебя не было - не значит что так не бывает
Αλεχ
дело не вт ом, что не бывает, а то что кмк это будет создавать кучу проблем
Αλεχ
это как глобальный мутабельный стейт, только еще хуже
Vladimir
Если у тебя есть микросервис, через который все лазят в бд, как ты сказал
Vladimir
То поздравляю ты изобрел бд