Size: a a a

2020 December 24

MB

Mikail Bagishov in Rust Beginners
Option<*mut Test> по ABI несовместим с плюсовым указателем (хотя бы потому, что занимает 16 байт)
источник

b

in Rust Beginners
Нет не допустимо, но если чудесным образом поинтер станет null то будет присутствовать такая проверка, или же если я сам этого не позволю то этого не будет ?
источник

/

/bin/cat in Rust Beginners
Option как минимум требует дискриминант для enum'a
источник

MB

Mikail Bagishov in Rust Beginners
Нет, проверка на null сама собой не появится.
Если ты хочешь ее делать в качестве страховки - то ее нужно вставлять руками
источник

/

/bin/cat in Rust Beginners
можно добавить обычный panic при nullptr
источник

MB

Mikail Bagishov in Rust Beginners
Еще кстати можно брать обычный *mut Test, но в начале функции делать assert!(!ptr.is_null())
источник

b

in Rust Beginners
Сишный null = None
источник

/

/bin/cat in Rust Beginners
Нет, сишный null это pointer
источник

b

in Rust Beginners
Mikail Bagishov
Еще кстати можно брать обычный *mut Test, но в начале функции делать assert!(!ptr.is_null())
Или так да
источник

/

/bin/cat in Rust Beginners
они даже по размеру не сходятся
источник

ИЛ

Иван Лещенко... in Rust Beginners
/bin/cat
они даже по размеру не сходятся
Там есть особые кейсы для Option, где весь Option<T> по размеру равен T
источник

ИЛ

Иван Лещенко... in Rust Beginners
Но вроде сырой указатель в них не входит
источник

/

/bin/cat in Rust Beginners
даже если входит, то можно получить разное поведение в дебаге и релизе
источник

MB

Mikail Bagishov in Rust Beginners
Option<*mut T> гарантированно не оптимизируется, потому что как?
Option<NonNull<T>> гарантированно оптимизируется
источник

V

V---V in Rust Beginners
с использованием в C++
_CTest *test;
 test = test_init();
 test_hello(test);
Можно узнать колор схему?
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
Поч в стд либе расте нет методов в стиле
.some(), ok(), box()
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
Чтобы писать x.some().box() вместо Box::new(Some(x))
источник

И

Игорь in Rust Beginners
как глубогий новичек думаю что у x нет метода some, значит тут применен ufcs, но я не знаю реализован ли он в rust
источник

AT

Alexander T in Rust Beginners
Oleg ℕizhnik
Поч в стд либе расте нет методов в стиле
.some(), ok(), box()
Бокс еще ладно (хотя тоже нет), а с Ok(...) и Some(...) в чем проблема?
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
Alexander T
Бокс еще ладно (хотя тоже нет), а с Ok(...) и Some(...) в чем проблема?
Неудобно читать и писать
источник