@@ -49,7 +49,7 @@ use openshell_core::proto_struct::{
4949 deserialize_optional_non_empty_string_list, struct_to_json_value,
5050} ;
5151use openshell_core:: { Config , Error , Result as CoreResult } ;
52- use std:: collections:: { HashMap , HashSet } ;
52+ use std:: collections:: HashMap ;
5353use std:: io:: Read ;
5454use std:: net:: { IpAddr , SocketAddr } ;
5555use std:: path:: { Path , PathBuf } ;
@@ -309,13 +309,13 @@ enum DockerDriverMountConfig {
309309 Bind {
310310 source : String ,
311311 target : String ,
312- #[ serde( default = "default_true" ) ]
312+ #[ serde( default = "driver_mounts:: default_true" ) ]
313313 read_only : bool ,
314314 } ,
315315 Volume {
316316 source : String ,
317317 target : String ,
318- #[ serde( default = "default_true" ) ]
318+ #[ serde( default = "driver_mounts:: default_true" ) ]
319319 read_only : bool ,
320320 #[ serde( default ) ]
321321 subpath : Option < String > ,
@@ -332,17 +332,13 @@ enum DockerDriverMountConfig {
332332 Image {
333333 source : String ,
334334 target : String ,
335- #[ serde( default = "default_true" ) ]
335+ #[ serde( default = "driver_mounts:: default_true" ) ]
336336 read_only : bool ,
337337 #[ serde( default ) ]
338338 subpath : Option < String > ,
339339 } ,
340340}
341341
342- fn default_true ( ) -> bool {
343- true
344- }
345-
346342type WatchStream =
347343 Pin < Box < dyn Stream < Item = Result < WatchSandboxesEvent , Status > > + Send + ' static > > ;
348344
@@ -1854,7 +1850,7 @@ fn validate_docker_driver_mounts(
18541850 mounts : & [ DockerDriverMountConfig ] ,
18551851 enable_bind_mounts : bool ,
18561852) -> Result < ( ) , Status > {
1857- let mut targets = HashSet :: new ( ) ;
1853+ let mut targets = Vec :: with_capacity ( mounts . len ( ) ) ;
18581854 for mount in mounts {
18591855 let target = match mount {
18601856 DockerDriverMountConfig :: Bind { source, target, .. } => {
@@ -1908,13 +1904,10 @@ fn validate_docker_driver_mounts(
19081904 } ;
19091905 let target = driver_mounts:: validate_container_mount_target ( target)
19101906 . map_err ( Status :: failed_precondition) ?;
1911- if !targets. insert ( target. clone ( ) ) {
1912- return Err ( Status :: failed_precondition ( format ! (
1913- "duplicate docker driver_config mount target '{target}'"
1914- ) ) ) ;
1915- }
1907+ targets. push ( target) ;
19161908 }
1917- Ok ( ( ) )
1909+ driver_mounts:: validate_unique_mount_targets ( targets. iter ( ) . map ( String :: as_str) , "docker" )
1910+ . map_err ( Status :: failed_precondition)
19181911}
19191912
19201913fn validate_optional_positive_integral_i64 (
0 commit comments