Cuno
Не думаю, что что-то удобное и читабельное можно без генераторов заимплементить.
Anonymous
нормально ли то, что cargo check и build работают корректно, но если я пытаюсь сделать cargo doc, то выпадают какие-то бессмысленные ошибки
Anonymous
у меня есть подозрение, что он неправильно парсит
Vladimir
Какие ошибки
Anonymous
pub fn compose<A, B, C, F, G>(f: F, g: G) -> impl Fn(A) -> C
where
F: Fn(B) -> C,
G: Fn(A) -> B,
{
move |x| f(g(x))
}
Anonymous
вот например такая функция
Anonymous
док думает что она возвращает ()
Anonymous
вот вся ошибка
error[E0277]: the trait bound `(): std::ops::Fn<(A,)>` is not satisfied
--> src/lib.rs:15:51
|
15 | pub fn compose<A, B, C, F, G>(f: F, g: G) -> impl Fn(A) -> C
| ^^^^^^^^^^^^^^^ the trait `std::ops::Fn<(A,)>` is not implemented for `()`
|
= note: the return type of a function must have a statically known size
error: Compilation failed, aborting rustdoc
Vladimir
Странно, должен показывать "impl" а не выводить тип
Vladimir
Но видимо баг доков
Anonymous
Anonymous
потому что он не компилит
Vladimir
Не, но на твоём месте начал бы с минификации примера
Vladimir
Ещё есть док Хайден, если вообще все плохо
Anonymous
pub fn a() -> impl Fn() -> () {
|| ()
}
Anonymous
лоло
Vladimir
Anonymous
в репе rust-lang/rust?
Vladimir
Ну у них же вроде нет отдельно репы док?
Anonymous
стопп надо попробовать обновиться
Anonymous
ага
Anonymous
ток экспериментальная у клабника
Anonymous
вообще непонятно, зачем все объединять
Vladimir
А зачем разбивать
Anonymous
чтобы не было одновременно 2к ишью
Vladimir
И у того и того есть плюсы
Anonymous
перемешанных
Vladimir
Например в объединении плюс в том, что команда не долбится
Vladimir
И каждый понимает положение дел
Anonymous
о
Anonymous
они пофиксили уже
Anonymous
вот https://github.com/fwrs/aviary-rs
Vladimir
Anonymous
чтоб писать в поинтфри (ну почти)
Vladimir
Поинтфрии это без указателей?
Vladimir
Разве с имплами это проблема?
Anonymous
Anonymous
мем
Anonymous
почитай про комбинаторную логику
Vladimir
Короче, "ненужно" очередное
доня.
Filipp
ура в расте есть NullPointerException
https://play.rust-lang.org/?gist=7c6b0c461a742efcdb02be7afa4a2778&version=nightly
Filipp
язык готов к энтепрайзу
Anonymous
где там нулл, поинтер и эксепшион
Loo
Loo
Но он его создал
Loo
Он настоящий творец
Filipp
Ну None на самом деле в большинстве случаев оптимизируется в nullptr
Anton
Подскажите, можно ли #[async] функцию написать не возвращая Result
Anton
Или надо возвращать Result<(), ()>?
Маjко
Подозреваю, что нет: оно разворачивается в возврат фьючи, а фьюча это всегда Result.
Anton
Ок
Anton
Тогда второй вопрос:
[rustc] only named lifetimes are allowed in `impl Trait`, but `` was found in the type `impl futures::__rt::MyFuture<<[generator@src\main.rs:8:49: 1:5 world:&mut World (impl futures::__rt::MyFuture<futures::__rt::Result<(), ()>>, futures::Async<futures::__rt::Mu>, (), futures::__rt::Result<(), ()>, impl futures::__rt::MyFuture<futures::__rt::Result<(), ()>>)] as futures::__rt::Generator>::Return>`
Что он от меня хочет?
У меня в расте опыта совсем нет. Книжку читал, что такое лайфтаймы вроде понимаю, но тут ошибка какая-то неочевидная
Anton
То есть понятно, что их надо указать явно для чего-то
Anton
Но непонятно для чего и какие)
Маjко
Нельзя юзать ссылки
Anton
Функция, на которую ругается, выглядит так:
#[async]
fn testing(world: &mut World) -> Result<(), ()> {
await!(increasing(world));
await!(decreasing(world));
Ok(())
}
Маjко
Все данные, которые ты юзаешь во фьюче должны быть во владении
Маjко
Как минимум Rc<RefCell<World»
Anton
Хмм
Маjко
Или указывать во фьюче лайфтайм
Маjко
Но я не знаю как с await это сделать
Anton
Мне как раз ссылки нужны
Маjко
fn testing<'a>(world: &'a mut World) -> impl FutureResult<(), ()> + 'a
Anton
У меня нет архитектуры, там три функции и main)
Маjко
Ну тогда тем более отхэндлить руками фьючи без авейтов и навесить правильные лайфтаймы — будет просто
Anton
Я просто слышал, что генераторы наконец завезли, и решил потестировать их
Маjко
Ну или, если производительность не супер-критична, то юзать Rc<Refcell<World»
Anton
Мне главное убедиться, что борроуинг нормально статически работает вокруг yield'ов
Маjко
Работает точно так же как с обычными фьючами
Маjко
Анонимные лайфтаймы низзя
Anton
Ну я с обычными не работал, увы
Anton
Из-за этого плохо представляю, во что await разворачивается
ivan
оставляю вам своего намесника, дарк пита из оверворлда. аминь.
Маjко