Size: a a a

2020 December 11

MB

Mikail Bagishov in Rust Beginners
В общем случае нужно  if или match делать
источник

АК

Александр Караев... in Rust Beginners
V---V
Можно ли как-то обратиться к элементу кортежа внутри enum?
То есть,
let tpl = Title::Tpl(255, 255, 255);
// Как в println! обратиться к одному элементу?

enum Title {
   Tpl(u8, u8, u8),
}
К элементу кортежа без enum - tpl.0
источник

V

V---V in Rust Beginners
Александр Караев
К элементу кортежа без enum - tpl.0
Без enum знаю как делается.
источник

r

red75prime in Rust Beginners
V---V
Можно ли как-то обратиться к элементу кортежа внутри enum?
То есть,
let tpl = Title::Tpl(255, 255, 255);
// Как в println! обратиться к одному элементу?

enum Title {
   Tpl(u8, u8, u8),
}
Сделать вспомогательный метод. fn first(&self) -> u8 { match self { Tpl(a, _, _) => *a, } }
источник

V

V---V in Rust Beginners
red75prime
Сделать вспомогательный метод. fn first(&self) -> u8 { match self { Tpl(a, _, _) => *a, } }
Спасибо.
источник

G

GWM in Rust Beginners
Привет, хочу сделать энум который содержит либо f32, либо функцию позволяющую вычислить f32 на основе другого значения, т.е. что-то вроде такого:
#[derive(Clone)]
pub enum IcedDistance {

   Fixed(f32),
   Relative(Box<dyn Fn(&Size) -> f32>)
}
&Size или Size - не сильно важно так как Size: Copy
Ну и надо чтобы этот энум можно было клонировать (еще лучше - копировать).
Как можно такое сделать?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=2c4c61545df218f9a72e3017ab2a3569
источник

MB

Mikail Bagishov in Rust Beginners
А ты действительно хочешь туда класть замыкания с захваченными перемеными, а не обычные функции?
источник

MB

Mikail Bagishov in Rust Beginners
Если да, Arc<dyn Fn(&Size) -> f32>
Если нет, то просто fn(&Size) -> f32
источник

G

GWM in Rust Beginners
Mikail Bagishov
А ты действительно хочешь туда класть замыкания с захваченными перемеными, а не обычные функции?
А, ну да, действительно, спасибо =)
источник

r

red75prime in Rust Beginners
GWM
Привет, хочу сделать энум который содержит либо f32, либо функцию позволяющую вычислить f32 на основе другого значения, т.е. что-то вроде такого:
#[derive(Clone)]
pub enum IcedDistance {

   Fixed(f32),
   Relative(Box<dyn Fn(&Size) -> f32>)
}
&Size или Size - не сильно важно так как Size: Copy
Ну и надо чтобы этот энум можно было клонировать (еще лучше - копировать).
Как можно такое сделать?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=2c4c61545df218f9a72e3017ab2a3569
В принципе можно сделать и с замыканиями. https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=377e71221b79e841faf9602eb4c6162c
источник

G

GWM in Rust Beginners
red75prime
В принципе можно сделать и с замыканиями. https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=377e71221b79e841faf9602eb4c6162c
Спасибо
источник

y

ymdev in Rust Beginners
Привет. Можно как-то подружить float с int, чтобы не приводить все к float?
То есть у меня сейчас есть
fn func(num: f32) -> bool {
   let mut div = 3;

   while div <= num.sqrt() {
       if num % div == 0 {
           return false;
       }

       div += 2;
   }
   true
}

Но из-за того, что num float, я вынужден все приводить к float, добавляя .0 в конец всем int'ам. Как их можно подружить?
источник

DO

Do c Tor O r` Ry in Rust Beginners
ymdev
Привет. Можно как-то подружить float с int, чтобы не приводить все к float?
То есть у меня сейчас есть
fn func(num: f32) -> bool {
   let mut div = 3;

   while div <= num.sqrt() {
       if num % div == 0 {
           return false;
       }

       div += 2;
   }
   true
}

Но из-за того, что num float, я вынужден все приводить к float, добавляя .0 в конец всем int'ам. Как их можно подружить?
Явно приводить придется
источник

y

ymdev in Rust Beginners
Do c Tor O r` Ry
Явно приводить придется
можно пример с функцией выше, как это будет выглядеть?
источник

y

ymdev in Rust Beginners
Я бы рад передать в параметр функции int, но у int нет метода sqrt 😐
источник

DO

Do c Tor O r` Ry in Rust Beginners
ymdev
можно пример с функцией выше, как это будет выглядеть?
источник

DO

Do c Tor O r` Ry in Rust Beginners
и не сравнивайте флоат числа с нулем - они ноль редко дают при делении, нужно окрестность нуля проверять
источник

y

ymdev in Rust Beginners
так погоди. Ты ведь тоже просто .0 добавил ко всем числам.
Тогда логичный вопрос, а есть ли разница между int и float с нулевой дробной частью?
источник

DO

Do c Tor O r` Ry in Rust Beginners
ymdev
так погоди. Ты ведь тоже просто .0 добавил ко всем числам.
Тогда логичный вопрос, а есть ли разница между int и float с нулевой дробной частью?
есть. .0 добавил, чтобы компилятор сам типы подобрал
источник

y

ymdev in Rust Beginners
Do c Tor O r` Ry
есть. .0 добавил, чтобы компилятор сам типы подобрал
я пытаюсь перенести код из статьи на Rust ( https://habr.com/ru/post/532432/ смотри любой язык, какой знаешь ). И есть подозрение, что использование float вместо int (как это требует оригинальный код), может сказаться на увеличении времени
источник