Skip to content

Commit 9729030

Browse files
committed
add #[inline] to a bunch of functions
1 parent e8b0eea commit 9729030

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

src/lib.rs

+44
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,17 @@ impl<T> VolatilePtr<'_, T>
145145
where
146146
T: ?Sized,
147147
{
148+
#[inline]
148149
pub unsafe fn new_read_write(pointer: NonNull<T>) -> VolatilePtr<'static, T> {
149150
unsafe { VolatilePtr::new_with_access(pointer, Access::read_write()) }
150151
}
151152

153+
#[inline]
152154
pub const unsafe fn new_read_only(pointer: NonNull<T>) -> VolatilePtr<'static, T, ReadOnly> {
153155
unsafe { VolatilePtr::new_with_access(pointer, Access::read_only()) }
154156
}
155157

158+
#[inline]
156159
pub const unsafe fn new_write_only(pointer: NonNull<T>) -> VolatilePtr<'static, T, WriteOnly> {
157160
unsafe { VolatilePtr::new_with_access(pointer, Access::write_only()) }
158161
}
@@ -180,6 +183,7 @@ where
180183
/// volatile.write(1);
181184
/// assert_eq!(volatile.read(), 1);
182185
/// ```
186+
#[inline]
183187
pub const unsafe fn new_with_access<A>(
184188
pointer: NonNull<T>,
185189
access: A,
@@ -188,6 +192,7 @@ where
188192
unsafe { Self::new_generic(pointer) }
189193
}
190194

195+
#[inline]
191196
pub const unsafe fn new_generic<'a, A>(pointer: NonNull<T>) -> VolatilePtr<'a, T, A> {
192197
VolatilePtr {
193198
pointer,
@@ -196,13 +201,15 @@ where
196201
}
197202
}
198203

204+
#[inline]
199205
pub fn from_ref<'a>(reference: &'a T) -> VolatilePtr<'a, T, ReadOnly>
200206
where
201207
T: 'a,
202208
{
203209
unsafe { VolatilePtr::new_generic(reference.into()) }
204210
}
205211

212+
#[inline]
206213
pub fn from_mut_ref<'a>(reference: &'a mut T) -> VolatilePtr<'a, T>
207214
where
208215
T: 'a,
@@ -238,6 +245,7 @@ where
238245
/// let mut_reference = unsafe { VolatilePtr::new_read_write(NonNull::from(&mut value)) };
239246
/// assert_eq!(mut_reference.read(), 50);
240247
/// ```
248+
#[inline]
241249
pub fn read(self) -> T
242250
where
243251
R: access::Safe,
@@ -265,6 +273,7 @@ where
265273
///
266274
/// assert_eq!(volatile.read(), 50);
267275
/// ```
276+
#[inline]
268277
pub fn write(self, value: T)
269278
where
270279
W: access::Safe,
@@ -290,6 +299,7 @@ where
290299
///
291300
/// assert_eq!(volatile.read(), 43);
292301
/// ```
302+
#[inline]
293303
pub fn update<F>(self, f: F)
294304
where
295305
R: access::Safe,
@@ -331,6 +341,7 @@ where
331341
///
332342
/// assert_eq!(unsafe { *unwrapped }, 50); // non volatile access, be careful!
333343
/// ```
344+
#[inline]
334345
pub fn as_ptr(self) -> NonNull<T> {
335346
self.pointer
336347
}
@@ -382,6 +393,7 @@ where
382393
/// value
383394
/// })};
384395
/// ```
396+
#[inline]
385397
pub unsafe fn map<F, U>(self, f: F) -> VolatilePtr<'a, U, Access<R, access::NoAccess>>
386398
where
387399
F: FnOnce(NonNull<T>) -> NonNull<U>,
@@ -391,6 +403,7 @@ where
391403
}
392404

393405
#[cfg(feature = "very_unstable")]
406+
#[inline]
394407
pub const unsafe fn map_const<F, U>(
395408
self,
396409
f: F,
@@ -402,6 +415,7 @@ where
402415
unsafe { VolatilePtr::new_generic(f(self.pointer)) }
403416
}
404417

418+
#[inline]
405419
pub unsafe fn map_mut<F, U>(self, f: F) -> VolatilePtr<'a, U, Access<R, W>>
406420
where
407421
F: FnOnce(NonNull<T>) -> NonNull<U>,
@@ -411,6 +425,7 @@ where
411425
}
412426

413427
#[cfg(feature = "very_unstable")]
428+
#[inline]
414429
pub const unsafe fn map_mut_const<F, U>(self, f: F) -> VolatilePtr<'a, U, Access<R, W>>
415430
where
416431
F: FnOnce(NonNull<T>) -> NonNull<U>,
@@ -423,10 +438,12 @@ where
423438
/// Methods for volatile slices
424439
#[cfg(feature = "unstable")]
425440
impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
441+
#[inline]
426442
pub fn len(self) -> usize {
427443
self.pointer.len()
428444
}
429445

446+
#[inline]
430447
pub fn is_empty(&self) -> bool {
431448
self.pointer.len() == 0
432449
}
@@ -467,6 +484,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
467484
/// let subslice = volatile.index(1..);
468485
/// assert_eq!(subslice.index(0).read(), 2);
469486
/// ```
487+
#[inline]
470488
pub fn index<I>(
471489
self,
472490
index: I,
@@ -480,6 +498,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
480498
}
481499

482500
#[cfg(feature = "very_unstable")]
501+
#[inline]
483502
pub const fn index_const(
484503
self,
485504
index: usize,
@@ -492,6 +511,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
492511
}
493512
}
494513

514+
#[inline]
495515
pub fn index_mut<I>(
496516
self,
497517
index: I,
@@ -505,6 +525,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
505525
}
506526

507527
#[cfg(feature = "very_unstable")]
528+
#[inline]
508529
pub const fn index_mut_const(self, index: usize) -> VolatilePtr<'a, T, Access<R, W>> {
509530
assert!(index < self.pointer.len(), "index out of bounds");
510531
unsafe {
@@ -515,6 +536,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
515536
}
516537

517538
/// Returns an iterator over the slice.
539+
#[inline]
518540
pub fn iter<'b>(
519541
self,
520542
) -> impl Iterator<Item = VolatilePtr<'a, T, Access<R, access::NoAccess>>> + 'b
@@ -528,6 +550,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
528550
}
529551

530552
/// Returns an iterator that allows modifying each value.
553+
#[inline]
531554
pub fn iter_mut<'b>(self) -> impl Iterator<Item = VolatilePtr<'a, T, Access<R, W>>> + 'b
532555
where
533556
'a: 'b,
@@ -572,6 +595,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
572595
/// assert_eq!(src, [1, 2]);
573596
/// assert_eq!(dst, [5, 1, 2]);
574597
/// ```
598+
#[inline]
575599
pub fn copy_into_slice(self, dst: &mut [T])
576600
where
577601
T: Copy,
@@ -629,6 +653,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
629653
/// assert_eq!(src, [1, 2, 3, 4]);
630654
/// assert_eq!(dst, [3, 4]);
631655
/// ```
656+
#[inline]
632657
pub fn copy_from_slice(self, src: &[T])
633658
where
634659
T: Copy,
@@ -683,6 +708,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
683708
/// volatile.copy_within(1..5, 8);
684709
///
685710
/// assert_eq!(&byte_array, b"Hello, Wello!");
711+
#[inline]
686712
pub fn copy_within(self, src: impl RangeBounds<usize>, dest: usize)
687713
where
688714
T: Copy,
@@ -708,6 +734,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
708734
}
709735
}
710736

737+
#[inline]
711738
pub fn split_at(
712739
self,
713740
mid: usize,
@@ -721,6 +748,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
721748
unsafe { self.split_at_unchecked(mid) }
722749
}
723750

751+
#[inline]
724752
pub fn split_at_mut(
725753
self,
726754
mid: usize,
@@ -734,6 +762,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
734762
unsafe { self.split_at_mut_unchecked(mid) }
735763
}
736764

765+
#[inline]
737766
unsafe fn split_at_unchecked(
738767
self,
739768
mid: usize,
@@ -750,6 +779,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
750779
}
751780
}
752781

782+
#[inline]
753783
unsafe fn split_at_mut_unchecked(
754784
self,
755785
mid: usize,
@@ -776,6 +806,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
776806
}
777807
}
778808

809+
#[inline]
779810
pub fn as_chunks<const N: usize>(
780811
self,
781812
) -> (
@@ -791,6 +822,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
791822
(array_slice, remainder)
792823
}
793824

825+
#[inline]
794826
pub unsafe fn as_chunks_unchecked<const N: usize>(
795827
self,
796828
) -> VolatilePtr<'a, [[T; N]], Access<R, access::NoAccess>> {
@@ -809,6 +841,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
809841
unsafe { VolatilePtr::new_generic(pointer) }
810842
}
811843

844+
#[inline]
812845
pub fn as_chunks_mut<const N: usize>(
813846
self,
814847
) -> (
@@ -824,6 +857,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
824857
(array_slice, remainder)
825858
}
826859

860+
#[inline]
827861
pub unsafe fn as_chunks_unchecked_mut<const N: usize>(
828862
self,
829863
) -> VolatilePtr<'a, [[T; N]], Access<R, W>> {
@@ -842,6 +876,7 @@ impl<'a, T, R, W> VolatilePtr<'a, [T], Access<R, W>> {
842876
unsafe { VolatilePtr::new_generic(pointer) }
843877
}
844878

879+
#[inline]
845880
pub unsafe fn as_chunks_unchecked_by_val<const N: usize>(
846881
self,
847882
) -> VolatilePtr<'a, [[T; N]], Access<R, W>> {
@@ -885,6 +920,7 @@ impl<R, W> VolatilePtr<'_, [u8], Access<R, W>> {
885920
/// buf.fill(1);
886921
/// assert_eq!(unsafe { buf.as_ptr().as_mut() }, &mut vec![1; 10]);
887922
/// ```
923+
#[inline]
888924
pub fn fill(self, value: u8)
889925
where
890926
W: access::Safe,
@@ -925,6 +961,7 @@ impl<'a, T, R, W, const N: usize> VolatilePtr<'a, [T; N], Access<R, W>> {
925961
///
926962
/// assert_eq!(dst, [1, 2]);
927963
/// ```
964+
#[inline]
928965
pub fn as_slice(self) -> VolatilePtr<'a, [T], Access<R, access::NoAccess>> {
929966
unsafe {
930967
self.map(|array| {
@@ -957,6 +994,7 @@ impl<'a, T, R, W, const N: usize> VolatilePtr<'a, [T; N], Access<R, W>> {
957994
///
958995
/// assert_eq!(dst, [1, 2]);
959996
/// ```
997+
#[inline]
960998
pub fn as_slice_mut(self) -> VolatilePtr<'a, [T], Access<R, W>> {
961999
unsafe {
9621000
self.map_mut(|array| {
@@ -987,6 +1025,7 @@ where
9871025
/// assert_eq!(read_only.read(), -4);
9881026
/// // read_only.write(10); // compile-time error
9891027
/// ```
1028+
#[inline]
9901029
pub fn read_only(self) -> VolatilePtr<'a, T, Access<R, access::NoAccess>> {
9911030
unsafe { VolatilePtr::new_generic(self.pointer) }
9921031
}
@@ -1011,6 +1050,7 @@ where
10111050
/// field_2.write(14);
10121051
/// // field_2.read(); // compile-time error
10131052
/// ```
1053+
#[inline]
10141054
pub fn write_only(self) -> VolatilePtr<'a, T, Access<access::NoAccess, W>> {
10151055
unsafe { VolatilePtr::new_generic(self.pointer) }
10161056
}
@@ -1021,20 +1061,23 @@ impl<T, R, W> VolatilePtr<'_, T, Access<R, W>>
10211061
where
10221062
T: Copy + ?Sized,
10231063
{
1064+
#[inline]
10241065
pub unsafe fn read_unsafe(self) -> T
10251066
where
10261067
R: access::Unsafe,
10271068
{
10281069
unsafe { ptr::read_volatile(self.pointer.as_ptr()) }
10291070
}
10301071

1072+
#[inline]
10311073
pub unsafe fn write_unsafe(self, value: T)
10321074
where
10331075
W: access::Unsafe,
10341076
{
10351077
unsafe { ptr::write_volatile(self.pointer.as_ptr(), value) };
10361078
}
10371079

1080+
#[inline]
10381081
pub unsafe fn update_unsafe<F>(self, f: F)
10391082
where
10401083
R: access::Unsafe,
@@ -1051,6 +1094,7 @@ impl<'a, T, A> Clone for VolatilePtr<'a, T, A>
10511094
where
10521095
T: ?Sized,
10531096
{
1097+
#[inline]
10541098
fn clone(&self) -> Self {
10551099
*self
10561100
}

0 commit comments

Comments
 (0)