Size: a a a

2020 December 23

MB

Mikail Bagishov in Rust Beginners
Прямой аналог сказать "при первом обращении присвоиит переменной значение, которое вернет эта функция" это, повторюсь, once_cell::sync::Lazy
источник

b

in Rust Beginners
Lazy не принимает struct как результат
источник

b

in Rust Beginners
а понял, Lazy::new(init_engine)
источник

b

in Rust Beginners
только по сути, ничего не изменилось, я так же использую переменную окружения
источник

b

in Rust Beginners
просто сократил количество инициализаций
источник

b

in Rust Beginners
если пытаться читать файлы или папки из либы fs::read_dir / fs::File::open()
результат будет таким -
[!] File /tmp/test.txt open failed / Error: Operation not permitted (os error 1)
[!] File /Users/wrk/profile.json open failed / Error: Operation not permitted (os error 1)
[+] File /etc/passwd opened
[!] Opening dir: / / Error: Operation not permitted (os error 1)
[!] Opening dir: /Users/wrk/ / Error: Operation not permitted (os error 1)
[!] Opening dir: /etc/ / Error: Operation not permitted (os error 1)
[!] Opening dir: /var/log / Error: Operation not permitted (os error 1)
[!] Opening dir: /var / Error: Operation not permitted (os error 1)
[!] Opening dir: /tmp / Error: Operation not permitted (os error 1)
источник

b

in Rust Beginners
но как бы мне лучше сделать, допустим я могу прочитать файл из приложения A, дописав соответствующий код, но в последующем, отдавать этим функциям char* … ? ведь я не могу обертку для struct написать
источник

y

ymdev in Rust Beginners
если пытаться читать файлы или папки из либы fs::read_dir / fs::File::open()
результат будет таким -
[!] File /tmp/test.txt open failed / Error: Operation not permitted (os error 1)
[!] File /Users/wrk/profile.json open failed / Error: Operation not permitted (os error 1)
[+] File /etc/passwd opened
[!] Opening dir: / / Error: Operation not permitted (os error 1)
[!] Opening dir: /Users/wrk/ / Error: Operation not permitted (os error 1)
[!] Opening dir: /etc/ / Error: Operation not permitted (os error 1)
[!] Opening dir: /var/log / Error: Operation not permitted (os error 1)
[!] Opening dir: /var / Error: Operation not permitted (os error 1)
[!] Opening dir: /tmp / Error: Operation not permitted (os error 1)
любопытно, что в temp не можешь зайти. Там обычно 777
А че показывает ls -l / | grep tmp ?
источник

b

in Rust Beginners
lrwxr-xr-x@ 1 root  admin  11 14 мар  2020 /tmp -> private/tmp
источник

b

in Rust Beginners
ну ладно, /tmp закрыто, но домашнюю папку прочитать ведь тоже не может
источник

y

ymdev in Rust Beginners
ну ладно, /tmp закрыто, но домашнюю папку прочитать ведь тоже не может
возможно макось изолирует как-то приложение. Может вообще от другого пользователя запускает.
Через ps можно посмотреть, что происходит
источник

BL

Blanche Lap in Rust Beginners
strace?
источник

b

in Rust Beginners
просто можно было бы написать класс на си, который реализует чтение из файла, декодирование, но если я захочу передавать передавать зашифрованное ключем rsa?.. сколько времени потребуется на переработку класса..
источник

b

in Rust Beginners
а сейчас либа на расте у меня делает get_char_for(«a.b.c»)
get_bool_for(«a.b.d») итп.. сокращает время на разработку и проектирование сишных классов
источник

A

Alexey in Rust Beginners
Ребятки, привет! Я начал недавно изучать раст, и как один из первых проектов решил написать парсер с питоновским интерфейсом, чтобы можно было использовать других проектах. Я решил проверить на чужой либе, насколько это будет работать и допилил к ней pyo3. Но скорость оказалась хуже чем чистая имплментация на Питоне. Как я понял, из-за того что pyo3 все переводит в cython? Нормально ли это? И, есть ли другой, более быстрый вариант встраивания раста в питонячий код?
источник

K

Kitsu in Rust Beginners
Для начала есть смысл замерить реализацию на расте отдельно, возможно в ней проблема
источник

A

Alexey in Rust Beginners
Да, ты прав, проверил имлиментацию на расте, она чуть-чуть медленее питона. Удивительно.
Но после pyo3 она медленее в два раза
источник

A

Alexey in Rust Beginners
Видимо придется писать все самому, есть какие-то тренды в написании парсеров? Что сейчас лучше всего использовать? nom? peg? Может есть что-то еще?
источник

С

Сергей in Rust Beginners
Alexey
Видимо придется писать все самому, есть какие-то тренды в написании парсеров? Что сейчас лучше всего использовать? nom? peg? Может есть что-то еще?
Есть ещё combine, он мне нравился больше, чем nom, т.к. там функции, а не макросы, но nom кажется сейчас тоже уже на функциях.
источник

A

Alexey in Rust Beginners
Да, замерил время:
32 сек - питон
65 сек - раст + pyo3
57 сек - раст
источник