Компиляция с --release
и наличие Cargo.toml
[profile.release]
debug=True
И действительно будет включать в себя символы отладки, а также выполнять оптимизацию. Два не противоречат друг другу.
Таблица [profile.release]
вашего Cargo.toml
только сообщает cargo
, какие параметры конфигурации вы хотели бы использовать, когда вы проходите флаг --release
. Другие варианты включают настройку LTO, уровни оптимизации и включение / отключение rpath.
Испытайте этот путь:
bbsl(Bin,Shift) -> <<_:Shift,Rest/bits>> = Bin, <<Rest/bits,0:Shift>>.
Используя неограниченные целочисленные размеры Erlang мы можем выполнить это:
1> Bits = <<16#0FFFFFFF:(4*8)>>.
<<15,255,255,255>>
2> size(Bits).
4
3> Size=size(Bits)*8.
32
4> <<Num:Size>> = Bits.
<<15,255,255,255>>
5> Num.
268435455
6> Num2 = Num bsl 4.
4294967280
7> Bits2 = <<Num2:Size>>.
<<"ÿÿÿð">>
8> <<A:8,B:8,C:8,D:8>>=Bits2.
<<"ÿÿÿð">>
9> A.
255
10> D.
240
поскольку мы ожидали.
Обратите внимание, что в моем решении я ожидал, в каком количестве сдвигов я буду нуждаться (4) путем добавления 4 '0 к начальной строке, сохраненной в двоичном файле (16#0F... первые 4 положения 0),
Не уверенный, как я обработал бы его, если бы я должен был сместиться вне 'границы' двоичного контейнера, я предполагаю, что Вы были бы просто И с 2^Size-1.