Αλεχ
@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
Народ, есть такой кот:
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
Народ, есть такой кот:
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);
...то уже не работает. Не понимаю, как исправить? И надо ли?
play.rust-lang.org
тут не ванги, чтобы понять, что у тебя там не работает
Sergey
и компилятор в голову не у всех встроен
Αλεχ
https://play.rust-lang.org/?gist=8105b15bc1cda8cc2cbc58cae563f4af&version=stable&mode=debug&edition=2015
Αλεχ
просто ссылка на пример
Αλεχ
почему не работает - хз
Αλεχ
чет странное
Sergey
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
саша
Народ, есть такой кот:
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);
...то уже не работает. Не понимаю, как исправить? И надо ли?
https://play.rust-lang.org/?gist=54601677e0fa58d949821757d8e7edc7&version=stable&mode=debug&edition=2015 вот так
Антон
Loo
Народ, есть такой кот:
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);
...то уже не работает. Не понимаю, как исправить? И надо ли?
зачем исправлять, если можно не исправлять
Dmitry
Посоны, а как в diesel бд сделать ? Руками sql писать ? Нету ничего что сделает за тебя ?
Kerrigan
Dmitry
т.е руками придется sql писать в миграциях ?
Kerrigan
да
Kerrigan
и так более правильно
Αλεχ
а дизель умеет в code first?
Kerrigan
что это?
Dmitry
Loyd
Dmitry
Aleksey
diesel print-schema еще есть
Kerrigan
не сделал
вот хз, у меня сам сгенерил diesel.toml и в src файлик создал
Dmitry
тоже пусто
Kerrigan
вейт, ты diesel-cli вообще поставил?
Dmitry
при diesel migration run ?
Dmitry
да все есь
Kerrigan
Kerrigan
но
Αλεχ
что это?
это когда SQL генерируется из описания типов на расте
Kerrigan
сначала надо сделать diesel setup вроде
Αλεχ
ну то есть ты написал struct Foo { bars: Vec<Bar> }
Αλεχ
и выполнил не знаю cargo generate-db
Αλεχ
и он сделал 2 таблички и FK
Dmitry
Αλεχ
Kerrigan
Αλεχ
Dmitry
и миграции нету. Ошибок нету. И таблици нету
Αλεχ
прямой доступ в БД должен быть у 1 сервиса
Αλεχ
остальные через него лазят
Kerrigan
давайте не сраться здесь про микросервисы, это в растжерк плз
Αλεχ
я не про микросвервисы
Kerrigan
всё равно в растжерк
Αλεχ
но серьезно, в БД доступ сразу у 2 приложений это что-то неправильное
Loyd
http://microservices.io/patterns/data/shared-database.html
Αλεχ
да я понял что вы так делаете, но у меня ни на одном проекте такой беды не бывало. Обычно 1 БД на приложение. И нет, это не микросервис, микросервис с БД на 20 таблиц не бывает
Kerrigan
если у тебя не было - не значит что так не бывает
Αλεχ
дело не вт ом, что не бывает, а то что кмк это будет создавать кучу проблем
Αλεχ
это как глобальный мутабельный стейт, только еще хуже
Vladimir
Если у тебя есть микросервис, через который все лазят в бд, как ты сказал
Vladimir
То поздравляю ты изобрел бд