Mercurial > crates > nonstick
comparison libpam-sys/libpam-sys-helpers/src/lib.rs @ 158:d5b7b28d754e
Add `__TARGET_DEFAULT__` PamImpl and set up for docsrs build.
Also fixes some formatting stuff.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Sat, 12 Jul 2025 17:17:37 -0400 |
| parents | 14708d9061dc |
| children | 9e4ce1631bd3 |
comparison
equal
deleted
inserted
replaced
| 157:0099f2f79f86 | 158:d5b7b28d754e |
|---|---|
| 4 use std::error::Error; | 4 use std::error::Error; |
| 5 use std::marker::{PhantomData, PhantomPinned}; | 5 use std::marker::{PhantomData, PhantomPinned}; |
| 6 use std::mem::ManuallyDrop; | 6 use std::mem::ManuallyDrop; |
| 7 use std::ptr::NonNull; | 7 use std::ptr::NonNull; |
| 8 use std::{any, fmt, mem, ptr, slice}; | 8 use std::{any, fmt, mem, ptr, slice}; |
| 9 // Type aliases: | |
| 10 | 9 |
| 11 // Memory management | 10 // Memory management |
| 12 | 11 |
| 13 /// A pointer-to-pointer-to-message container for PAM's conversation callback. | 12 /// A pointer-to-pointer-to-message container for PAM's conversation callback. |
| 14 /// | 13 /// |
| 570 // make sure they're not accidentally allocated adjacently | 569 // make sure they're not accidentally allocated adjacently |
| 571 // in such a way that it's compatible with X/SSO. | 570 // in such a way that it's compatible with X/SSO. |
| 572 // | 571 // |
| 573 // a pointer to (&str, i32) can be treated as a pointer to (&str). | 572 // a pointer to (&str, i32) can be treated as a pointer to (&str). |
| 574 #[repr(C)] | 573 #[repr(C)] |
| 575 struct pair(&'static str, i32); | 574 struct Pair(&'static str, i32); |
| 576 let boxes = vec![ | 575 let boxes = vec![ |
| 577 Box::new(pair("a", 1)), | 576 Box::new(Pair("a", 1)), |
| 578 Box::new(pair("b", 2)), | 577 Box::new(Pair("b", 2)), |
| 579 Box::new(pair("c", 3)), | 578 Box::new(Pair("c", 3)), |
| 580 Box::new(pair("D", 4)), | 579 Box::new(Pair("D", 4)), |
| 581 ]; | 580 ]; |
| 582 let ptr: *const *const &str = boxes.as_ptr().cast(); | 581 let ptr: *const *const &str = boxes.as_ptr().cast(); |
| 583 let got: Vec<&str> = unsafe { PtrPtrVec::iter_over_linux(ptr, 4) } | 582 let got: Vec<&str> = unsafe { PtrPtrVec::iter_over_linux(ptr, 4) } |
| 584 .cloned() | 583 .cloned() |
| 585 .collect(); | 584 .collect(); |
