2017-08-08 10 views
6

chcę użyć https://rust.godbolt.org zobaczyć montażowej tej funkcji:Dlaczego eksplorator kompilatora programu Godbolt nie wyświetla żadnych wyników dla mojej funkcji w trybie kompilacji w trybie zwolnienia?

fn add(a: u8, b: u8) -> u8 { 
    a + b 
} 

wklejeniem na stronie działa poprawnie, ale pokazuje wiele zgromadzeń. Nie jest to niespodzianką, biorąc pod uwagę, że rustc kompiluje mój kod domyślnie w trybie debugowania. Gdy kompiluję w trybie zwolnienia by passing -O to the compiler, w ogóle nie ma wyjścia!

Co robię źle? Dlaczego kompilator Rust usuwa wszystko w trybie zwolnienia?

Odpowiedz

11

Godbolt kompiluje twój kod Rust jako skrzynkę biblioteki, przekazując --crate-type=lib do kompilatora. Kod z biblioteki jest przydatny tylko wtedy, gdy jest publiczny. W twoim przypadku twoja funkcja add() jest prywatna i jest całkowicie usunięta z kompilatora. Rozwiązanie jest raczej proste:

Udostępniaj swoją funkcję publicznie, dodając do niej pub. Kompilator nie usunie tej funkcji, ponieważ jest częścią publicznego interfejsu twojej biblioteki.