Repository navigation
INTERNAL: Build the crate as a cdylib with project lints - #1
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
namsic
left a comment
There was a problem hiding this comment.
lints 설정하지 않아도 각 옵션마다 기본값이 있고 그에 따라 동작할 것인데, 개별 옵션을 조정하는 이유는 무엇인가요?
논리적으로 발생할 수 없는 (또는 발생하면 안 되는) 상황에서도 unwrap(panic)하지 않고 정상 동작하는 방어 코드를 넣도록 강제한다는 의미인가요?
옵션은 하나하나 필요에 따라 조정한 것인가요? 다른 곳의 프리셋을 가져온 것인가요?
현재 작성 중인 코드가 독립적인 프로그램이 아닌 memcached의 확장 모듈로 동작하기 때문에, 잠재적인 위험을 원천 차단하고자 Clippy 기본 그룹 대신 특화된 린트(lint) 규칙을 엄격하게 개별 적용했습니다.
아니요, 방어 코드를 강제하려는 것은 아닙니다. 논리적으로 일어날 수 없는 경우라면 그대로 이 린트의 목적은 패닉할 수 있는 지점을 숨기지 않고 이유와 함께 드러내는 것입니다.
필요에 따라 조정했습니다. |
3962364 to
05266fc
Compare
05266fc to
529777f
Compare
529777f to
e53f67d
Compare
91d1b47 to
4222f8f
Compare
112fae5 to
97afec4
Compare
97afec4 to
a2492cc
Compare
a2492cc to
90e50b9
Compare
90e50b9 to
f7dee4b
Compare
🔗 Related Issue
⌨️ What I did
arcus-vector를 memcached에
-X로 붙는 확장 모듈로 빌드하기 위한 크레이트 설정입니다.기능 코드는 없고, 이후 PR들이 따를 빌드 형태와 린트 기준만 정합니다.
변경 사항
Cargo.tomlcrate-type = ["cdylib"],[lib] name = "arcusv": memcached가 적재하는libarcusv.so를 만듭니다.rust-version = "1.88": let-chains(if let .. && let ..)를 씁니다.[lints]: 데몬 안에서 도는 모듈이라 패닉과 abort로 이어지는 코드를 막는 쪽으로 잡았습니다.clippy::pedantic전체를 켜고, FFI·벡터 연산의 의도된as캐스트 4종을 끕니다.unwrap_used,expect_used,print_stderr,print_stdout를 금지합니다(테스트는 허용).unsafe블록에는// SAFETY:근거를 필수로 적습니다(undocumented_unsafe_blocks).#[expect(.., reason = "..")]로만 둡니다(allow_attributes).clippy.toml: 테스트에서만unwrap/expect/출력을 허용합니다.rustfmt.toml: 2024 스타일입니다. (가장 최신)src/lib.rs:cargo init예제 코드를 지우고 크레이트 설명만 남겼습니다.Summary by CodeRabbit