Size: a a a

Rust — русскоговорящее сообществo

2020 October 11

S

Sergey in Rust — русскоговорящее сообществo
polunin.ai
потому что у тебя стрим, может for_each какой-то?
Похоже, но у for_each future возвращает пустой тюпл
источник

S

Sergey in Rust — русскоговорящее сообществo
источник

S

Sergey in Rust — русскоговорящее сообществo
Вот такая штука заработала с filter_map
fn some_function() -> futures::stream::BoxStream<'static, f64> {
   async_std::stream::interval(self.duration)
       .filter_map(|_| fetch_price() )
       .boxed()
}

async fn fetch_price() -> Option<f64>;
источник

p

polunin.ai in Rust — русскоговорящее сообществo
как глянуть местоположение std в файловой системе?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
polunin.ai
как глянуть местоположение std в файловой системе?
Заставь функцию в std запаниковать чтобы в стактрейсе путь подсмотреть
источник

AK

Adam K in Rust — русскоговорящее сообществo
polunin.ai
как глянуть местоположение std в файловой системе?
rustc --print sysroot
Бинарь в папке bin, сорцы в lib/rustlib/src
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
Заставь функцию в std запаниковать чтобы в стактрейсе путь подсмотреть
По-моему обычно используется заранее собранный бинарник std, и поэтому ты увидишь путь, по которому лежала std когда кто-то собирал дистрибутив раста, что-то типа /rustc/...
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Чтобы такой совет работал, надо -Zbuild-std указать
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
По-моему обычно используется заранее собранный бинарник std, и поэтому ты увидишь путь, по которому лежала std когда кто-то собирал дистрибутив раста, что-то типа /rustc/...
Странно, но у меня и мои и не мои пути встречаются......
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
Странно, но у меня и мои и не мои пути встречаются......
возможно из-за дженерик функций?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Тоже так подумал, но хз
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Короче, -Zbuild-std точно поможет.
источник
2020 October 12

f

folex in Rust — русскоговорящее сообществo
Не могу совладать с лайфтаймами в serde::Deserialize. По идее как-нибудь бы указать что у s лайфтайм приходит из ссылки на vec, но что-то не выходит.

fn next<T: for<'de> Deserialize<'de>>( args: &mut impl Iterator<Item = Value> ) -> Result<T, ()> { ... }
fn main() {
   let vec: Vec<Value> = vec![];
   let s: &str = next(&mut vec.into_iter()).unwrap();
}


> implementation of serde::Deserialize is not general enough
>    = note: &str must implement serde::Deserialize<'0>, for any lifetime '0...
>    = note: ...but &str actually implements serde::Deserialize<'1>, for some specific lifetime '1

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=ea3574b04b9e2be4b0632e115540797c
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
folex
Не могу совладать с лайфтаймами в serde::Deserialize. По идее как-нибудь бы указать что у s лайфтайм приходит из ссылки на vec, но что-то не выходит.

fn next<T: for<'de> Deserialize<'de>>( args: &mut impl Iterator<Item = Value> ) -> Result<T, ()> { ... }
fn main() {
   let vec: Vec<Value> = vec![];
   let s: &str = next(&mut vec.into_iter()).unwrap();
}


> implementation of serde::Deserialize is not general enough
>    = note: &str must implement serde::Deserialize<'0>, for any lifetime '0...
>    = note: ...but &str actually implements serde::Deserialize<'1>, for some specific lifetime '1

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=ea3574b04b9e2be4b0632e115540797c
DeserializeOwned требует, чтобы у тебя был результат валиден для любого лайфтайма. Если заменить &str на String, то компиляция проходит
источник

f

folex in Rust — русскоговорящее сообществo
Да, но мне нет смысла вытаскивать String оттуда, мне хватит и &str
источник

f

folex in Rust — русскоговорящее сообществo
Ага, оно даже вот так не работает 🤔
let s: &str = serde_json::from_value(Value::String("wow".to_string())).unwrap();
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
folex
Ага, оно даже вот так не работает 🤔
let s: &str = serde_json::from_value(Value::String("wow".to_string())).unwrap();
Потому что строка временной получается, наверное
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
folex
Ага, оно даже вот так не работает 🤔
let s: &str = serde_json::from_value(Value::String("wow".to_string())).unwrap();
serde_json::from_value требуеь DeserializeOwned.

&str не DeserializeOwned.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
tip: ты не можешь заимствовать из json, т.к. он поддерживает \n
источник

Э

Эрик in Rust — русскоговорящее сообществo
folex
Ага, оно даже вот так не работает 🤔
let s: &str = serde_json::from_value(Value::String("wow".to_string())).unwrap();
Конечно не работает, у жсона свои эскейпы.
источник