MCPcopy Index your code
hub / github.com/RustPython/RustPython / split

Method split

crates/vm/src/builtins/str.rs:766–808  ·  view source on GitHub ↗
(zelf: &Py<Self>, args: SplitArgs, vm: &VirtualMachine)

Source from the content-addressed store, hash-verified

764
765 #[pymethod]
766 fn split(zelf: &Py<Self>, args: SplitArgs, vm: &VirtualMachine) -> PyResult<Vec<PyObjectRef>> {
767 let elements = match zelf.as_str_kind() {
768 PyKindStr::Ascii(s) => s.py_split(
769 args,
770 vm,
771 || zelf.as_object().to_owned(),
772 |v, s, vm| {
773 v.as_bytes()
774 .split_str(s)
775 .map(|s| unsafe { AsciiStr::from_ascii_unchecked(s) }.to_pyobject(vm))
776 .collect()
777 },
778 |v, s, n, vm| {
779 v.as_bytes()
780 .splitn_str(n, s)
781 .map(|s| unsafe { AsciiStr::from_ascii_unchecked(s) }.to_pyobject(vm))
782 .collect()
783 },
784 |v, n, vm| {
785 v.as_bytes().py_split_whitespace(n, |s| {
786 unsafe { AsciiStr::from_ascii_unchecked(s) }.to_pyobject(vm)
787 })
788 },
789 ),
790 PyKindStr::Utf8(s) => s.py_split(
791 args,
792 vm,
793 || zelf.as_object().to_owned(),
794 |v, s, vm| v.split(s).map(|s| vm.ctx.new_str(s).into()).collect(),
795 |v, s, n, vm| v.splitn(n, s).map(|s| vm.ctx.new_str(s).into()).collect(),
796 |v, n, vm| v.py_split_whitespace(n, |s| vm.ctx.new_str(s).into()),
797 ),
798 PyKindStr::Wtf8(w) => w.py_split(
799 args,
800 vm,
801 || zelf.as_object().to_owned(),
802 |v, s, vm| v.split(s).map(|s| vm.ctx.new_str(s).into()).collect(),
803 |v, s, n, vm| v.splitn(n, s).map(|s| vm.ctx.new_str(s).into()).collect(),
804 |v, n, vm| v.py_split_whitespace(n, |s| vm.ctx.new_str(s).into()),
805 ),
806 }?;
807 Ok(elements)
808 }
809
810 #[pymethod]
811 fn rsplit(zelf: &Py<Self>, args: SplitArgs, vm: &VirtualMachine) -> PyResult<Vec<PyObjectRef>> {

Callers

nothing calls this directly

Calls 11

py_splitMethod · 0.80
collectMethod · 0.80
splitnMethod · 0.80
as_str_kindMethod · 0.45
to_ownedMethod · 0.45
as_objectMethod · 0.45
mapMethod · 0.45
as_bytesMethod · 0.45
to_pyobjectMethod · 0.45
py_split_whitespaceMethod · 0.45
new_strMethod · 0.45

Tested by

no test coverage detected