Size: a a a

2020 December 01

IP

Iaroslav Postovalov in Rust Beginners
окей, а можно ли Option::Some(&str) от "" превратить в Option::None, а все остальные оставить без изменений?
источник

r

red75prime in Rust Beginners
match s { None | Some("") => None, other => other }
источник

IP

Iaroslav Postovalov in Rust Beginners
red75prime
match s { None | Some("") => None, other => other }
а, я уже понял, что можно сделать .and_then(|s| if s.is_empty() { None } else { Some(s) })
источник

r

red75prime in Rust Beginners
Одно дословно передаёт описание, другое нет
источник

G

George in Rust Beginners
Пытаюсь написать макрос генерирующий макрос. Вопрос. Без процедурных тут уже никак?  repeating parameters мне нужны.
Мне нужно, что он внутренние $_ не распознавал как свои переменные
источник

IP

Iaroslav Postovalov in Rust Beginners
red75prime
Одно дословно передаёт описание, другое нет
нет, оказывается, есть .filter(|s| !s.is_empty())
источник

a

antuan in Rust Beginners
Iaroslav Postovalov
нет, оказывается, есть .filter(|s| !s.is_empty())
.filter(Option::is_some)
источник

IP

Iaroslav Postovalov in Rust Beginners
antuan
.filter(Option::is_some)
s - это строка
источник

a

antuan in Rust Beginners
Iaroslav Postovalov
s - это строка
А, ага
источник

IP

Iaroslav Postovalov in Rust Beginners
как запретить вызывать прямое создание для структуры, у которой все поля pub?
источник

IP

Iaroslav Postovalov in Rust Beginners
пока что единственная идея - это сделать бессмысленное приватное поле
источник

IB

Ilya Bogdanov in Rust Beginners
Iaroslav Postovalov
пока что единственная идея - это сделать бессмысленное приватное поле
да, сделай приватное поле (можешь использовать PhantomData, например, в качестве типа)
источник

IP

Iaroslav Postovalov in Rust Beginners
Ilya Bogdanov
да, сделай приватное поле (можешь использовать PhantomData, например, в качестве типа)
оке
источник

A

Adatan in Rust Beginners
источник

A

Adatan in Rust Beginners
есть инфа как представлять enums в yaml'e?
источник

IB

Ivan Boldyrev in Rust Beginners
Adatan
есть инфа как представлять enums в yaml'e?
Любым вышеизложенным способом.
источник

JM

John Meow in Rust Beginners
Adatan
есть инфа как представлять enums в yaml'e?
Там есть жсоны, любой жсон - валидный ямл
источник

A

Adatan in Rust Beginners
ну дак там типо джейсоновский объект = enum
источник

a

antuan in Rust Beginners
почему этот код компилируется?, и
в частности, почему компилятор позволяет делать records::table, а затем вызывать .values(records), ведь, очевидно, у них разные типы: в одном случае это модуль, в другом - вектор.

могу предположить, что при таком конфликте имен компилятор проявляет некоторое подобие интеллекта. но не должна ли компиляция падать?
это diesel, да, если вдруг кто не понял
use crate::schema::records;

#[derive(Debug, Insertable)]
#[table_name = "records"]
pub struct NewRecord {
   ...
}

impl NewRecord {
   pub async fn update_or_create(pool: &Pool, records: Vec<Self>) -> Result<usize> {
       Ok(diesel::insert_into(records::table)
           .values(records)
           .on_conflict((records::source_record_id, records::source_id))
           .do_update()
           .set(records::content.eq(excluded(records::content)))
           .execute_async(pool)
           .await?)
   }
}
источник

AL

Andrey @ozkriff Lesn... in Rust Beginners
antuan
почему этот код компилируется?, и
в частности, почему компилятор позволяет делать records::table, а затем вызывать .values(records), ведь, очевидно, у них разные типы: в одном случае это модуль, в другом - вектор.

могу предположить, что при таком конфликте имен компилятор проявляет некоторое подобие интеллекта. но не должна ли компиляция падать?
это diesel, да, если вдруг кто не понял
use crate::schema::records;

#[derive(Debug, Insertable)]
#[table_name = "records"]
pub struct NewRecord {
   ...
}

impl NewRecord {
   pub async fn update_or_create(pool: &Pool, records: Vec<Self>) -> Result<usize> {
       Ok(diesel::insert_into(records::table)
           .values(records)
           .on_conflict((records::source_record_id, records::source_id))
           .do_update()
           .set(records::content.eq(excluded(records::content)))
           .execute_async(pool)
           .await?)
   }
}
У модулей и переменных разные пространства имен.

https://github.com/rust-lang/rust/blob/master/src/test/ui/weird-exprs.rs#L87 fn u8
источник