comparison rust/hg-core/src/utils/hg_path.rs @ 50451:d27b6fc7c1bf

rustdoc: summary line for hg_path_to_os_string The main motivation of this change is to avoid the TODO being the summary line, even though this leads to a pretty obvious summary. Then doc-comments for the other functions are introduced for consistency.
author Georges Racinet <georges.racinet@octobus.net>
date Mon, 03 Apr 2023 16:03:41 +0200
parents 331a3cbe1c9e
children de317a87ea6a
comparison
equal deleted inserted replaced
50450:e2c8b30ab4e7 50451:d27b6fc7c1bf
477 fn extend<T: IntoIterator<Item = u8>>(&mut self, iter: T) { 477 fn extend<T: IntoIterator<Item = u8>>(&mut self, iter: T) {
478 self.inner.extend(iter); 478 self.inner.extend(iter);
479 } 479 }
480 } 480 }
481 481
482 /// Create a new [`OsString`] from types referenceable as [`HgPath`].
483 ///
482 /// TODO: Once <https://www.mercurial-scm.org/wiki/WindowsUTF8Plan> is 484 /// TODO: Once <https://www.mercurial-scm.org/wiki/WindowsUTF8Plan> is
483 /// implemented, these conversion utils will have to work differently depending 485 /// implemented, these conversion utils will have to work differently depending
484 /// on the repository encoding: either `UTF-8` or `MBCS`. 486 /// on the repository encoding: either `UTF-8` or `MBCS`.
485
486 pub fn hg_path_to_os_string<P: AsRef<HgPath>>( 487 pub fn hg_path_to_os_string<P: AsRef<HgPath>>(
487 hg_path: P, 488 hg_path: P,
488 ) -> Result<OsString, HgPathError> { 489 ) -> Result<OsString, HgPathError> {
489 hg_path.as_ref().check_state()?; 490 hg_path.as_ref().check_state()?;
490 let os_str; 491 let os_str;
496 // TODO Handle other platforms 497 // TODO Handle other platforms
497 // TODO: convert from WTF8 to Windows MBCS (ANSI encoding). 498 // TODO: convert from WTF8 to Windows MBCS (ANSI encoding).
498 Ok(os_str.to_os_string()) 499 Ok(os_str.to_os_string())
499 } 500 }
500 501
502 /// Create a new [`PathBuf`] from types referenceable as [`HgPath`].
501 pub fn hg_path_to_path_buf<P: AsRef<HgPath>>( 503 pub fn hg_path_to_path_buf<P: AsRef<HgPath>>(
502 hg_path: P, 504 hg_path: P,
503 ) -> Result<PathBuf, HgPathError> { 505 ) -> Result<PathBuf, HgPathError> {
504 Ok(Path::new(&hg_path_to_os_string(hg_path)?).to_path_buf()) 506 Ok(Path::new(&hg_path_to_os_string(hg_path)?).to_path_buf())
505 } 507 }
506 508
509 /// Create a new [`HgPathBuf`] from types referenceable as [`OsStr`].
507 pub fn os_string_to_hg_path_buf<S: AsRef<OsStr>>( 510 pub fn os_string_to_hg_path_buf<S: AsRef<OsStr>>(
508 os_string: S, 511 os_string: S,
509 ) -> Result<HgPathBuf, HgPathError> { 512 ) -> Result<HgPathBuf, HgPathError> {
510 let buf; 513 let buf;
511 #[cfg(unix)] 514 #[cfg(unix)]
518 521
519 buf.check_state()?; 522 buf.check_state()?;
520 Ok(buf) 523 Ok(buf)
521 } 524 }
522 525
526 /// Create a new [`HgPathBuf`] from types referenceable as [`Path`].
523 pub fn path_to_hg_path_buf<P: AsRef<Path>>( 527 pub fn path_to_hg_path_buf<P: AsRef<Path>>(
524 path: P, 528 path: P,
525 ) -> Result<HgPathBuf, HgPathError> { 529 ) -> Result<HgPathBuf, HgPathError> {
526 let buf; 530 let buf;
527 let os_str = path.as_ref().as_os_str(); 531 let os_str = path.as_ref().as_os_str();