Skip to content

Commit

Permalink
Future-proof some code for unsizedness (if we'll use extern types for…
Browse files Browse the repository at this point in the history
… opaque types in the future)
  • Loading branch information
crumblingstatue committed Oct 24, 2024
1 parent eb3cd24 commit a425cd7
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 11 deletions.
10 changes: 5 additions & 5 deletions src/cpp/fbox.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use std::{
/// F stands for "foreign".
pub struct FBox<T: ?Sized>(pub(crate) NonNull<T>);

impl<T> std::fmt::Debug for FBox<T> {
impl<T: ?Sized> std::fmt::Debug for FBox<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
Expand All @@ -25,27 +25,27 @@ impl<T> std::fmt::Debug for FBox<T> {
}
}

impl<T> FBox<T> {
impl<T: ?Sized> FBox<T> {
pub(crate) fn new(ptr: *mut T) -> Option<Self> {
NonNull::new(ptr).map(FBox)
}
}

impl<T> Deref for FBox<T> {
impl<T: ?Sized> Deref for FBox<T> {
type Target = T;

fn deref(&self) -> &T {
unsafe { self.0.as_ref() }
}
}

impl<T> DerefMut for FBox<T> {
impl<T: ?Sized> DerefMut for FBox<T> {
fn deref_mut(&mut self) -> &mut Self::Target {
unsafe { self.0.as_mut() }
}
}

impl<T> Borrow<T> for FBox<T> {
impl<T: ?Sized> Borrow<T> for FBox<T> {
fn borrow(&self) -> &T {
self
}
Expand Down
2 changes: 1 addition & 1 deletion src/graphics/render_states.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use crate::graphics::{BlendMode, Shader, Texture, Transform};
/// ```no_run
/// # use sfml::graphics::*;
/// # let mut window: RenderWindow = unimplemented!();
/// # let shader: Shader = unimplemented!();
/// # let shader: &Shader = unimplemented!();
/// # let sprite: Sprite = unimplemented!();
/// let mut states = RenderStates::default();
/// states.shader = Some(&shader);
Expand Down
8 changes: 4 additions & 4 deletions src/graphics/shader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ use {
/// # use sfml::system::*;
/// # use sfml::cpp::FBox;
/// let texture: FBox<Texture> = unimplemented!();
/// let mut shader: Shader = unimplemented!();
/// let mut shader: &Shader = unimplemented!();
/// let color: Color = unimplemented!();
/// let transform: Transform = unimplemented!();
/// shader.set_uniform_float("offset", 2.);
Expand All @@ -83,11 +83,11 @@ use {
///
/// ```no_run
/// # use sfml::graphics::*;
/// # let shader: Shader = unimplemented!();
/// # let shader: &Shader = unimplemented!();
/// # let mut window: RenderWindow = unimplemented!();
/// # let sprite: Sprite = unimplemented!();
/// let mut states = RenderStates::default();;
/// states.shader = Some(&shader);
/// states.shader = Some(shader);
/// window.draw_with_renderstates(&sprite, &states);
/// ```
///
Expand Down Expand Up @@ -118,7 +118,7 @@ use {
///
/// ```no_run
/// use sfml::graphics::*;
/// # let shader: Shader = unimplemented!();
/// # let shader: &Shader = unimplemented!();
/// Shader::bind(Some(&shader));
/// // ... render OpenGL geometry ...
/// Shader::bind(None);
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ impl IntoSfResult<()> for bool {
}
}

impl<T> IntoSfResult<cpp::FBox<T>> for Option<cpp::FBox<T>> {
impl<T: ?Sized> IntoSfResult<cpp::FBox<T>> for Option<cpp::FBox<T>> {
fn into_sf_result(self) -> SfResult<cpp::FBox<T>> {
self.ok_or(SfError::CallFailed)
}
Expand Down

0 comments on commit a425cd7

Please sign in to comment.