The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Rust вошёл в 20 самых популярных языков по рейтингу Redmonk"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Rust вошёл в 20 самых популярных языков по рейтингу Redmonk" +/
Сообщение от Аноним (126), 30-Июл-20, 16:05 
>[оверквотинг удален]
>      n: usize) -> *mut u8 {
>     let mut i = 0;
>     while i < n {
>         *((dest as usize +
> i) as *mut u8) = *((src as usize + i) as
> *const u8);
>         i += 1;
>     }
>     dest
> }

Мда...
1) В сях это определено как void* а не u8*. Это нечто для раста-онли, несовместимое с кодом на си, так?
2) Куча закорючек, да еще я не понимаю - ну ок, а если ей NULL дать на вход, то будет - что?

А, да, ну и на сях тогда уж:


void *memcpy(void *dest, const void *src, size_t n)
{
    size_t remains = n;
    uint8_t  *  sr8  = (uint8_t  *) src;
    uint8_t  *  ds8  = (uint8_t  *) dest;
    if ((dest == NULL) || (src == NULL) || (n == 0))
    {
        return dest;
    }

    while (remains > 0)
    {
        *ds8 = *sr8;
        remains--;
        ds8++;
        sr8++;
    }
    return dest;
}


Мне кажется, или оно лаконичнее, ловит явно кривые случаи как прописано в спеках, и закорючек меньше? Не буду утверждать что это 100% compliant но хотя оно делалось для стартапа, до кучи сие устроило и огромный сторонний код, которому я накидал тесткейсы и они проехали.
Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Rust вошёл в 20 самых популярных языков по рейтингу Redmonk, opennews, 30-Июл-20, 11:33  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру