Контакты
Местоположение
Беларусь, Гродненская обл.

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (6)
  • Как оптимизировать код в rust при помощи trait?

    Trame2771
    @Trame2771
    Как я понял, дать гарантии компилятору, для того, чтобы сделать то, что вы хотите, пока нельзя, или сделать это будет очень неочевидно. Гарантии нужны потому что язык безопасный. Возможно когда добавят кастомные маркеры в язык, тогда можно будет чё-то гарантировать. А пока можно пользоваться макросами. Это не так плохо как кажеться. Это не нагружает бинарник, нагружает только компилятор. Причем линейно. Нагрузка на компилятор будет составлять (Количество типов * количество функций). Правда если будет использоваться больше одного типа в структуре, тогда будет применятся комбинаторика для определения нагрузки на компилятор. То есть само приложение будет таким же производительным, правда из-за нагрузки на компилятор, он может перестать немного оптимизировать код. Вот решение чтобы не дублировать код:
    mod float_trait {
        pub trait Float {}
        impl Float for f32 {}
        impl Float for f64 {}
    }
    
    use crate::float_trait::Float;
    
    mod float_struct {
        use crate::float_trait::Float;
    
        #[derive(Debug)]
        pub struct FloatStruct<T: Float>
        {
            _a: i8,
            _b: String,
            pub c: T,
        }
        
        macro_rules! impl_float_struct {
            ($($type:ty),*) => {
                $(
                    impl FloatStruct<$type> {
                        pub fn new() -> Self {
                            Self {
                                _a: 2,
                                _b: String::from("hi"),
                                c: 0.3,
                            }
                        }
                    }
                )*
            }
        }
        
        impl_float_struct![f32, f64];
    }
    
    fn main() {
        let fs = float_struct::FloatStruct::<f32>::new();
        println!("{:#?}", fs.c)
    }


    Другое решение, очевидно нагружающее само приложение, и лёгкое для компилятора
    mod float_trait {
        pub trait Float {}
        impl Float for f32 {}
        impl Float for f64 {}
    }
    
    mod float_struct {
        use crate::float_trait::Float;
    
        #[derive(Debug)]
        pub struct FloatStruct<T: std::str::FromStr + Float>
        {
            _a: i8,
            _b: String,
            pub c: T,
        }
    
        impl<T: std::str::FromStr + Float> FloatStruct<T> {
            pub fn new() -> Self {
                Self {
                    _a: 2,
                    _b: String::from("hi"),
                    c: {
                        let Ok(r) = "0.3".parse::<T>()
                            else {unreachable!()};
                        r
                    }
                }
            }
        }
    }
    
    fn main() {
        let fs = float_struct::FloatStruct::<f32>::new();
        println!("{:#?}", fs.c)
    }
    Ответ написан
    1 комментарий
  • Это приложение вирусное?

    Trame2771
    @Trame2771
    телефон стал жутко лагать

    Это могло произойти по каким угодно причинам

    Но всё выглядит так, как будто это был вирус, так ли это?

    Вы и правы и не правы одновременно. Формально это не вирус, а на деле так оно и есть. Вирус семейства "майнеры", в нашем случае реклаймер

    Если не устанавливали приложение значит оно скорее всего системное, можете выключить его, сведя его активность на нет, или же удалить, но тут нудно либо adb, либо рут. Безопаснее через adb, в интернете есть простые гайды как это сделать (нужно пк)

    На а вообще если переживаете за работоспособность смартфона то можете перестать, в кирпич он не превратится. Во-первых, в оффициальных магазинах (Appgallery - офф. магазин huawei) не должно быть вредоносных программ. А во-вторых сейчас реализовать вредоносные программы на андроиде очень сдожно. Если реализовывать, то необходимо пользователя заставлять не просто давать какие-то разрешение, но и ещё делать очень странные махинации по типу включения режима отладки в настройках разработчика. Если приложение спокойно работает без запрос от вас подозрительных действий, то оно не сможет найти путь как причинить вам вред, кроме как занимать место не телефоне или жрать трафик в фоновом режиме ну и подобное
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (30)