mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'xvar/add-clone-on-ref-ptr-clippy-lint' into 'master'
Added #![deny(clippy::clone_on_ref_ptr)] to all crates and fixed resulting lint errors See merge request veloren/veloren!1411
This commit is contained in:
commit
25ab132d73
@ -1,5 +1,6 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(clippy::option_map_unit_fn)]
|
#![allow(clippy::option_map_unit_fn)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
|
|
||||||
use client::{Client, Event};
|
use client::{Client, Event};
|
||||||
use common::{clock::Clock, comp};
|
use common::{clock::Clock, comp};
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(label_break_value, option_zip)]
|
#![feature(label_break_value, option_zip)]
|
||||||
|
|
||||||
pub mod cmd;
|
pub mod cmd;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(clippy::option_map_unit_fn)]
|
|
||||||
#![allow(incomplete_features)]
|
#![allow(incomplete_features)]
|
||||||
#![type_length_limit = "1664759"]
|
#![type_length_limit = "1664759"]
|
||||||
|
#![allow(clippy::option_map_unit_fn)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(
|
#![feature(
|
||||||
arbitrary_enum_discriminant,
|
arbitrary_enum_discriminant,
|
||||||
associated_type_defaults,
|
associated_type_defaults,
|
||||||
|
@ -371,7 +371,8 @@ impl State {
|
|||||||
|
|
||||||
// Run systems to update the world.
|
// Run systems to update the world.
|
||||||
// Create and run a dispatcher for ecs systems.
|
// Create and run a dispatcher for ecs systems.
|
||||||
let mut dispatch_builder = DispatcherBuilder::new().with_pool(self.thread_pool.clone());
|
let mut dispatch_builder =
|
||||||
|
DispatcherBuilder::new().with_pool(Arc::clone(&self.thread_pool));
|
||||||
sys::add_local_systems(&mut dispatch_builder);
|
sys::add_local_systems(&mut dispatch_builder);
|
||||||
// TODO: Consider alternative ways to do this
|
// TODO: Consider alternative ways to do this
|
||||||
add_foreign_systems(&mut dispatch_builder);
|
add_foreign_systems(&mut dispatch_builder);
|
||||||
|
@ -189,7 +189,7 @@ impl<'a, V: RectRasterableVol + ReadVol> CachedVolGrid2d<'a, V> {
|
|||||||
.get(&ck)
|
.get(&ck)
|
||||||
.ok_or(VolGrid2dError::NoSuchChunk)?;
|
.ok_or(VolGrid2dError::NoSuchChunk)?;
|
||||||
// Store most recently looked up chunk in the cache
|
// Store most recently looked up chunk in the cache
|
||||||
self.cache = Some((ck, chunk.clone()));
|
self.cache = Some((ck, Arc::clone(&chunk)));
|
||||||
chunk
|
chunk
|
||||||
};
|
};
|
||||||
let co = VolGrid2d::<V>::chunk_offs(pos);
|
let co = VolGrid2d::<V>::chunk_offs(pos);
|
||||||
|
@ -375,7 +375,7 @@ impl Network {
|
|||||||
self.participant_disconnect_sender
|
self.participant_disconnect_sender
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
.insert(pid, participant.a2s_disconnect_s.clone());
|
.insert(pid, Arc::clone(&participant.a2s_disconnect_s));
|
||||||
Ok(participant)
|
Ok(participant)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -414,10 +414,10 @@ impl Network {
|
|||||||
/// [`listen`]: crate::api::Network::listen
|
/// [`listen`]: crate::api::Network::listen
|
||||||
pub async fn connected(&self) -> Result<Participant, NetworkError> {
|
pub async fn connected(&self) -> Result<Participant, NetworkError> {
|
||||||
let participant = self.connected_receiver.lock().await.next().await?;
|
let participant = self.connected_receiver.lock().await.next().await?;
|
||||||
self.participant_disconnect_sender
|
self.participant_disconnect_sender.lock().await.insert(
|
||||||
.lock()
|
participant.remote_pid,
|
||||||
.await
|
Arc::clone(&participant.a2s_disconnect_s),
|
||||||
.insert(participant.remote_pid, participant.a2s_disconnect_s.clone());
|
);
|
||||||
Ok(participant)
|
Ok(participant)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![cfg_attr(test, deny(rust_2018_idioms))]
|
#![cfg_attr(test, deny(rust_2018_idioms))]
|
||||||
#![cfg_attr(test, deny(warnings))]
|
#![cfg_attr(test, deny(warnings))]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(try_trait)]
|
#![feature(try_trait)]
|
||||||
|
|
||||||
//! Crate to handle high level networking of messages with different
|
//! Crate to handle high level networking of messages with different
|
||||||
|
@ -147,7 +147,7 @@ impl BParticipant {
|
|||||||
let (w2b_frames_s, w2b_frames_r) = mpsc::unbounded::<C2pFrame>();
|
let (w2b_frames_s, w2b_frames_r) = mpsc::unbounded::<C2pFrame>();
|
||||||
let (prios, a2p_msg_s, b2p_notify_empty_stream_s) = PrioManager::new(
|
let (prios, a2p_msg_s, b2p_notify_empty_stream_s) = PrioManager::new(
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
self.metrics.clone(),
|
Arc::clone(&self.metrics),
|
||||||
self.remote_pid_string.clone(),
|
self.remote_pid_string.clone(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -486,7 +486,7 @@ impl BParticipant {
|
|||||||
// This channel is now configured, and we are running it in scope of the
|
// This channel is now configured, and we are running it in scope of the
|
||||||
// participant.
|
// participant.
|
||||||
let w2b_frames_s = w2b_frames_s.clone();
|
let w2b_frames_s = w2b_frames_s.clone();
|
||||||
let channels = self.channels.clone();
|
let channels = Arc::clone(&self.channels);
|
||||||
async move {
|
async move {
|
||||||
let (channel, b2w_frame_s, b2r_read_shutdown) = Channel::new(cid);
|
let (channel, b2w_frame_s, b2r_read_shutdown) = Channel::new(cid);
|
||||||
let mut lock = channels.write().await;
|
let mut lock = channels.write().await;
|
||||||
@ -772,7 +772,7 @@ impl BParticipant {
|
|||||||
self.streams.write().await.insert(sid, StreamInfo {
|
self.streams.write().await.insert(sid, StreamInfo {
|
||||||
prio,
|
prio,
|
||||||
promises,
|
promises,
|
||||||
send_closed: send_closed.clone(),
|
send_closed: Arc::clone(&send_closed),
|
||||||
b2a_msg_recv_s: Mutex::new(b2a_msg_recv_s),
|
b2a_msg_recv_s: Mutex::new(b2a_msg_recv_s),
|
||||||
});
|
});
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
|
@ -216,7 +216,7 @@ impl Scheduler {
|
|||||||
Protocols::Tcp(TcpProtocol::new(
|
Protocols::Tcp(TcpProtocol::new(
|
||||||
stream,
|
stream,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
self.metrics.clone(),
|
Arc::clone(&self.metrics),
|
||||||
)),
|
)),
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
@ -241,14 +241,14 @@ impl Scheduler {
|
|||||||
info!("Connecting Udp to: {}", addr);
|
info!("Connecting Udp to: {}", addr);
|
||||||
let (udp_data_sender, udp_data_receiver) = mpsc::unbounded::<Vec<u8>>();
|
let (udp_data_sender, udp_data_receiver) = mpsc::unbounded::<Vec<u8>>();
|
||||||
let protocol = UdpProtocol::new(
|
let protocol = UdpProtocol::new(
|
||||||
socket.clone(),
|
Arc::clone(&socket),
|
||||||
addr,
|
addr,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
self.metrics.clone(),
|
Arc::clone(&self.metrics),
|
||||||
udp_data_receiver,
|
udp_data_receiver,
|
||||||
);
|
);
|
||||||
self.pool.spawn_ok(
|
self.pool.spawn_ok(
|
||||||
Self::udp_single_channel_connect(socket.clone(), udp_data_sender)
|
Self::udp_single_channel_connect(Arc::clone(&socket), udp_data_sender)
|
||||||
.instrument(tracing::info_span!("udp", ?addr)),
|
.instrument(tracing::info_span!("udp", ?addr)),
|
||||||
);
|
);
|
||||||
(Protocols::Udp(protocol), true)
|
(Protocols::Udp(protocol), true)
|
||||||
@ -396,7 +396,7 @@ impl Scheduler {
|
|||||||
let protocol = TcpProtocol::new(
|
let protocol = TcpProtocol::new(
|
||||||
stream,
|
stream,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
self.metrics.clone(),
|
Arc::clone(&self.metrics),
|
||||||
);
|
);
|
||||||
self.init_protocol(Protocols::Tcp(protocol), None, true)
|
self.init_protocol(Protocols::Tcp(protocol), None, true)
|
||||||
.await;
|
.await;
|
||||||
@ -439,10 +439,10 @@ impl Scheduler {
|
|||||||
let (udp_data_sender, udp_data_receiver) = mpsc::unbounded::<Vec<u8>>();
|
let (udp_data_sender, udp_data_receiver) = mpsc::unbounded::<Vec<u8>>();
|
||||||
listeners.insert(remote_addr, udp_data_sender);
|
listeners.insert(remote_addr, udp_data_sender);
|
||||||
let protocol = UdpProtocol::new(
|
let protocol = UdpProtocol::new(
|
||||||
socket.clone(),
|
Arc::clone(&socket),
|
||||||
remote_addr,
|
remote_addr,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
self.metrics.clone(),
|
Arc::clone(&self.metrics),
|
||||||
udp_data_receiver,
|
udp_data_receiver,
|
||||||
);
|
);
|
||||||
self.init_protocol(Protocols::Udp(protocol), None, false)
|
self.init_protocol(Protocols::Udp(protocol), None, false)
|
||||||
@ -499,10 +499,10 @@ impl Scheduler {
|
|||||||
// the whole server easily for new clients UDP doesnt work at all, as
|
// the whole server easily for new clients UDP doesnt work at all, as
|
||||||
// the UDP listening is done in another place.
|
// the UDP listening is done in another place.
|
||||||
let cid = self.channel_ids.fetch_add(1, Ordering::Relaxed);
|
let cid = self.channel_ids.fetch_add(1, Ordering::Relaxed);
|
||||||
let participants = self.participants.clone();
|
let participants = Arc::clone(&self.participants);
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
let metrics = self.metrics.clone();
|
let metrics = Arc::clone(&self.metrics);
|
||||||
let pool = self.pool.clone();
|
let pool = Arc::clone(&self.pool);
|
||||||
let local_pid = self.local_pid;
|
let local_pid = self.local_pid;
|
||||||
let local_secret = self.local_secret;
|
let local_secret = self.local_secret;
|
||||||
// this is necessary for UDP to work at all and to remove code duplication
|
// this is necessary for UDP to work at all and to remove code duplication
|
||||||
@ -514,7 +514,7 @@ impl Scheduler {
|
|||||||
local_pid,
|
local_pid,
|
||||||
local_secret,
|
local_secret,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
metrics.clone(),
|
Arc::clone(&metrics),
|
||||||
send_handshake,
|
send_handshake,
|
||||||
);
|
);
|
||||||
match handshake
|
match handshake
|
||||||
@ -541,7 +541,7 @@ impl Scheduler {
|
|||||||
pid,
|
pid,
|
||||||
sid,
|
sid,
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
metrics.clone(),
|
Arc::clone(&metrics),
|
||||||
);
|
);
|
||||||
|
|
||||||
let participant = Participant::new(
|
let participant = Participant::new(
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
|
|
||||||
mod tui_runner;
|
mod tui_runner;
|
||||||
mod tuilog;
|
mod tuilog;
|
||||||
|
@ -111,7 +111,7 @@ impl Tui {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
let mut msg_s = self.msg_s.take().unwrap();
|
let mut msg_s = self.msg_s.take().unwrap();
|
||||||
let running = self.running.clone();
|
let running = Arc::clone(&self.running);
|
||||||
|
|
||||||
if basic {
|
if basic {
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
|
@ -85,7 +85,7 @@ impl ChunkGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn cancel_all(&mut self) {
|
pub fn cancel_all(&mut self) {
|
||||||
let metrics = self.metrics.clone();
|
let metrics = Arc::clone(&self.metrics);
|
||||||
self.pending_chunks.drain().for_each(|(_, cancel)| {
|
self.pending_chunks.drain().for_each(|(_, cancel)| {
|
||||||
cancel.store(true, Ordering::Relaxed);
|
cancel.store(true, Ordering::Relaxed);
|
||||||
metrics.chunks_canceled.inc();
|
metrics.chunks_canceled.inc();
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(clippy::option_map_unit_fn)]
|
#![allow(clippy::option_map_unit_fn)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(bool_to_option, drain_filter, option_zip)]
|
#![feature(bool_to_option, drain_filter, option_zip)]
|
||||||
#![cfg_attr(not(feature = "worldgen"), feature(const_panic))]
|
#![cfg_attr(not(feature = "worldgen"), feature(const_panic))]
|
||||||
|
|
||||||
@ -548,7 +549,7 @@ impl Server {
|
|||||||
None,
|
None,
|
||||||
pos,
|
pos,
|
||||||
thread_pool,
|
thread_pool,
|
||||||
world.clone(),
|
Arc::clone(&world),
|
||||||
index.clone(),
|
index.clone(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -853,7 +854,7 @@ impl Server {
|
|||||||
Some(entity),
|
Some(entity),
|
||||||
key,
|
key,
|
||||||
&mut self.thread_pool,
|
&mut self.thread_pool,
|
||||||
self.world.clone(),
|
Arc::clone(&self.world),
|
||||||
self.index.clone(),
|
self.index.clone(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -337,7 +337,7 @@ impl ServerMetrics {
|
|||||||
|
|
||||||
pub fn run(&mut self, addr: SocketAddr) -> Result<(), Box<dyn Error>> {
|
pub fn run(&mut self, addr: SocketAddr) -> Result<(), Box<dyn Error>> {
|
||||||
self.running.store(true, Ordering::Relaxed);
|
self.running.store(true, Ordering::Relaxed);
|
||||||
let running2 = self.running.clone();
|
let running2 = Arc::clone(&self.running);
|
||||||
|
|
||||||
let registry = self
|
let registry = self
|
||||||
.registry
|
.registry
|
||||||
@ -381,7 +381,7 @@ impl ServerMetrics {
|
|||||||
|
|
||||||
pub fn tick(&self) -> u64 { self.tick.fetch_add(1, Ordering::Relaxed) + 1 }
|
pub fn tick(&self) -> u64 { self.tick.fetch_add(1, Ordering::Relaxed) + 1 }
|
||||||
|
|
||||||
pub fn tick_clone(&self) -> Arc<AtomicU64> { self.tick.clone() }
|
pub fn tick_clone(&self) -> Arc<AtomicU64> { Arc::clone(&self.tick) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for ServerMetrics {
|
impl Drop for ServerMetrics {
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ impl Sound {
|
|||||||
Ok(Sound(Arc::new(buf)))
|
Ok(Sound(Arc::new(buf)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cursor(&self) -> io::Cursor<Sound> { io::Cursor::new(Sound(self.0.clone())) }
|
pub fn cursor(&self) -> io::Cursor<Sound> { io::Cursor::new(Sound(Arc::clone(&self.0))) }
|
||||||
|
|
||||||
pub fn decoder(&self) -> rodio::Decoder<io::Cursor<Sound>> {
|
pub fn decoder(&self) -> rodio::Decoder<io::Cursor<Sound>> {
|
||||||
rodio::Decoder::new(self.cursor()).unwrap()
|
rodio::Decoder::new(self.cursor()).unwrap()
|
||||||
|
@ -65,9 +65,11 @@ use conrod_core::{
|
|||||||
use specs::{Join, WorldExt};
|
use specs::{Join, WorldExt};
|
||||||
use std::{
|
use std::{
|
||||||
collections::{HashMap, VecDeque},
|
collections::{HashMap, VecDeque},
|
||||||
|
sync::Arc,
|
||||||
time::Instant,
|
time::Instant,
|
||||||
};
|
};
|
||||||
use vek::*;
|
use vek::*;
|
||||||
|
|
||||||
const XP_COLOR: Color = Color::Rgba(0.59, 0.41, 0.67, 1.0);
|
const XP_COLOR: Color = Color::Rgba(0.59, 0.41, 0.67, 1.0);
|
||||||
const TEXT_COLOR: Color = Color::Rgba(1.0, 1.0, 1.0, 1.0);
|
const TEXT_COLOR: Color = Color::Rgba(1.0, 1.0, 1.0, 1.0);
|
||||||
const TEXT_GRAY_COLOR: Color = Color::Rgba(0.5, 0.5, 0.5, 1.0);
|
const TEXT_GRAY_COLOR: Color = Color::Rgba(0.5, 0.5, 0.5, 1.0);
|
||||||
@ -591,7 +593,7 @@ impl Hud {
|
|||||||
// Load world map
|
// Load world map
|
||||||
let world_map = (
|
let world_map = (
|
||||||
ui.add_graphic_with_rotations(Graphic::Image(
|
ui.add_graphic_with_rotations(Graphic::Image(
|
||||||
client.world_map.0.clone(),
|
Arc::clone(&client.world_map.0),
|
||||||
Some(water_color),
|
Some(water_color),
|
||||||
)),
|
)),
|
||||||
client.world_map.1.map(u32::from),
|
client.world_map.1.map(u32::from),
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(clippy::option_map_unit_fn, incomplete_features)]
|
#![allow(incomplete_features)]
|
||||||
|
#![allow(clippy::option_map_unit_fn)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(array_map, bool_to_option, const_generics, drain_filter, or_patterns)]
|
#![feature(array_map, bool_to_option, const_generics, drain_filter, or_patterns)]
|
||||||
#![recursion_limit = "2048"]
|
#![recursion_limit = "2048"]
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ impl PlayState for CharSelectionState {
|
|||||||
|
|
||||||
return PlayStateResult::Switch(Box::new(SessionState::new(
|
return PlayStateResult::Switch(Box::new(SessionState::new(
|
||||||
global_state,
|
global_state,
|
||||||
self.client.clone(),
|
Rc::clone(&self.client),
|
||||||
)));
|
)));
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ use common::{
|
|||||||
vol::ReadVol,
|
vol::ReadVol,
|
||||||
};
|
};
|
||||||
use specs::{Join, WorldExt};
|
use specs::{Join, WorldExt};
|
||||||
use std::{cell::RefCell, rc::Rc, time::Duration};
|
use std::{cell::RefCell, rc::Rc, sync::Arc, time::Duration};
|
||||||
use tracing::{error, info};
|
use tracing::{error, info};
|
||||||
use vek::*;
|
use vek::*;
|
||||||
|
|
||||||
@ -981,7 +981,7 @@ impl PlayState for SessionState {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
self.voxygen_i18n.log_missing_entries();
|
self.voxygen_i18n.log_missing_entries();
|
||||||
self.hud.update_language(self.voxygen_i18n.clone());
|
self.hud.update_language(Arc::clone(&self.voxygen_i18n));
|
||||||
},
|
},
|
||||||
HudEvent::ChangeFullscreenMode(new_fullscreen_settings) => {
|
HudEvent::ChangeFullscreenMode(new_fullscreen_settings) => {
|
||||||
global_state
|
global_state
|
||||||
@ -1086,7 +1086,7 @@ impl PlayState for SessionState {
|
|||||||
} else if let ClientState::Registered = client_state {
|
} else if let ClientState::Registered = client_state {
|
||||||
PlayStateResult::Switch(Box::new(CharSelectionState::new(
|
PlayStateResult::Switch(Box::new(CharSelectionState::new(
|
||||||
global_state,
|
global_state,
|
||||||
self.client.clone(),
|
Rc::clone(&self.client),
|
||||||
)))
|
)))
|
||||||
} else {
|
} else {
|
||||||
error!("Client not in the expected state, exiting session play state");
|
error!("Client not in the expected state, exiting session play state");
|
||||||
|
@ -46,7 +46,7 @@ impl Singleplayer {
|
|||||||
let settings2 = settings.clone();
|
let settings2 = settings.clone();
|
||||||
|
|
||||||
let paused = Arc::new(AtomicBool::new(false));
|
let paused = Arc::new(AtomicBool::new(false));
|
||||||
let paused1 = paused.clone();
|
let paused1 = Arc::clone(&paused);
|
||||||
|
|
||||||
let (result_sender, result_receiver) = bounded(1);
|
let (result_sender, result_receiver) = bounded(1);
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(incomplete_features)]
|
#![allow(incomplete_features)]
|
||||||
#![allow(clippy::option_map_unit_fn)]
|
#![allow(clippy::option_map_unit_fn)]
|
||||||
|
#![deny(clippy::clone_on_ref_ptr)]
|
||||||
#![feature(
|
#![feature(
|
||||||
arbitrary_enum_discriminant,
|
arbitrary_enum_discriminant,
|
||||||
bool_to_option,
|
bool_to_option,
|
||||||
|
Loading…
Reference in New Issue
Block a user